1.1 输出Unicode格式
import urllib.request
request=urllib.request.Request('http://www.baidu.com')
response=urllib.request.urlopen(request)
html=response.read()
print(html)
输出是Unicode格式
>>> print(dir(urllib))
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__',
'__package__', '__path__', '__spec__']
奇怪,为什么urllib
展开没有request
>>> help(urllib)
Help on package urllib:
NAME
urllib
PACKAGE CONTENTS
error
parse
request
response
robotparser
原来要用help
知识点:
1、urllib.request
1.2 为了显示中文,更改了输出格式
import urllib.request
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030') #改变标准输出的默认编码
request=urllib.request.Request('http://www.cc98.org/index.asp')
response=urllib.request.urlopen(request)
html=response.read()
print(html.decode('utf-8'))
这里边,把utf标准输出转化为gb18030,详细见 参考4。
问题:
1.爬http://www.baidu.com
和爬https://www.baidu.com
得到的内容不同;
2.爬http://www.baidu.com
得到的内容和直接用浏览器看源代码的内容不同,感觉直接用python爬,内容缺少。
1.3采用requests.get()
import requests
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030') #改变标准输出的默认编码
html = requests.get('http://www.baidu.com')
html.encoding = 'utf-8' #这一行是将编码转为utf-8否则中文会显示乱码。
print(html.text)
1.4采用修改http 的requests.get()
import requests
import re
import io
from imp import reload
#下面三行是编码转换的功能
import sys
reload(sys)
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030') #改变标准输出的默认编码
#hea是我们自己构造的一个字典,里面保存了user-agent。
#让目标网站误以为本程序是浏览器,并非爬虫。
#从网站的Requests Header中获取。【审查元素】
hea = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36'}
html = requests.get('http://www.baidu.com/',headers = hea)
html.encoding = 'utf-8' #这一行是将编码转为utf-8否则中文会显示乱码。
print(html.text)
import requests
import re
import io
#下面三行是编码转换的功能
import sys
from imp import reload
reload(sys)
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030') #改变标准输出的默认编码
#hea是我们自己构造的一个字典,里面保存了user-agent。
#让目标网站误以为本程序是浏览器,并非爬虫。
#从网站的Requests Header中获取。【审查元素】
hea = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36'}
html = requests.get('http://www.douban.com/',headers = hea)
html.encoding = 'utf-8' #这一行是将编码转为utf-8否则中文会显示乱码。
#此为正则表达式部分。找到规律,利用正则,内容就可以出来
title = re.findall(' ',html.text,re.S)
for each in title:
print(each)
知识点:
1.from imp import reload
2.sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030') #改变标准输出的默认编码
#-*-coding:utf8-*-
import requests
import re
#需要使用Chrome浏览器中的:审查元素->Network
#很多信息,如url、page、提交方法等都必须从里得到
#原来的目标网址,但不能作为目标url
# url = 'https://www.crowdfunder.com/browse/deals'
#Post表单向此链接提交数据
url = 'https://www.crowdfunder.com/browse/deals&template=false'
#get方法比较
# html = requests.get(url).text
# print html
#注意这里的page后面跟的数字需要放到引号里面。
#page的数据可以改动
data = {
'entities_only':'true',
'page':'2'
}
html_post = requests.post(url,data=data)
title = re.findall('"card-title">(.*?)
参考:
1.Python3 urllib模块的使用;
2.Requests快速上手;
3.Requests高级用法;
4.编码gbk错误问题
5.Requests获取网页源码