有些网站会检查你是不是真的浏览器访问,还是机器自动访问的。这种情况,加上User-Agent,表明你是浏览器访问即可。服务器会识别headers中的referer是不是它自己,如果不是,有的服务器不会响应,所以我们还可以在headers中加入referer。以谷歌浏览器的开发者工具为例(右键检查或Ctrl+Shift+I),刷新页面,在Network模块中我们点开左边name中项目,可以看到一些信息,其中我们就可以看到Referer和User-Agent的信息,把它们复制下。
chrome开发者工具.png伪装的格式为:
# 伪装成浏览器访问,适用于拒绝爬虫的网站
headers = {'User-Agent':'XXXXX'}
#或者
headers = {'Referer':'XXXXX'}
#一般是字典格式,最好将User-Agent和Referer的信息都加上
headers = {'User-Agent':'XXXXX', 'Referer':'XXXXX'}
(1)方法一使用requests模块
import requests
url = 'http://www.baidu.com'
#添加头部,伪装浏览器,字典格式
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.103 Safari/537.36'}
#增加headers参数
response = requests.get(url=url, headers=headers)
response.encoding = 'utf-8'
html = response.text
print(html)
(2)方法二使用urllib模块
import urllib.request
url = 'http://www.baidu.com'
#添加头部,伪装浏览器
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.103 Safari/537.36'}
#Request类的实例,构造时需要传入Url,Data,headers等等的内容
resquest = urllib.request.Request(url=url, headers=headers)
response = urllib.request.urlopen(resquest).read()
html = response.decode('utf-8')
print(html)
网友评论