- 当我们发起请求的时候,为避免对方检测到我们是一个爬虫,我们在发起请求的时候需要模拟浏览器发起请求,即在发起请求的时候需要携带浏览器名称的参数。
- 可以打开浏览器:查看元素-->network-->找到请求头-->User-Agent-->设置浏览器名称
USER_AGDNTS = [
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:64.0) Gecko/20100101 Firefox/64.0',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1',
'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0',
]
req_header = {
'User-Agent':random.choice(USER_AGDNTS)
}
#构建一个request对象
req = request.Request(url,headers=req_header)
#根据Request对象发起请求
response = request.urlopen(req)
- 可以下载一个fake_useragent模块生成浏览器名称
from fake_useragent import UserAgent
#实例化一个UA
user_agent = UserAgent()
#获取google浏览器的ua
print(user_agent.chrome)
#获取火狐浏览器的ua
print(user_agent.firefox)
#获取safar浏览器的ua
print(user_agent.safari)
#随机获取ua
print(user_agent.random)
from urllib import request
#目标url
url = 'https://github.com/hellysmile/fake-useragent'
#构建请求头
req_header = {
'User-Agent':user_agent.random
}
#构建一个Request对象
req = request.Request(url,headers=req_header)
#另一种方式添加请求头
req.add_header('Referer','https://github.com/search?q=fake-useragent')
#从请求头中取出一个请求头的参数
print(req.get_header('Referer'))
#发起请求
response = request.urlopen(req,timeout=10)