request.Request类:
如果想要在请求时增加一些请求头,那么就必须使用request.Request类来实现。比如要增加一个User-Agent,示例代码如下:
from urllib import request
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
}
req = request.Request("http://www.baidu.com/",headers=headers)
resp = request.urlopen(req)
print(resp.read())
eg.爬取 拉钩 网上的信息,拉钩网这个网站具有反爬虫机制
from urllib import request,parse
url = 'https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=' //可以发现如果不自己构造headers将爬取不到网站的有用数据,下面来构造请求头。
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36',
'Referer': 'https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput='
} //发现仅仅构造请求头还是不够的,还需要增加referer
data = {
'first': ture,
'pn': v1,
'kd': 'python'
}
req = request.Request(url,headers=headers,data=parse.urlencode(data).encode('utf-8'),method='POST')
resp = request.urlopen(req)
print(resp.read().decode('utf-8'))
需要再对data进行深入理解。