很多网站都不喜欢被爬虫程序访问,但又没有办法完全禁止,于是就设置了一些反爬策略。比如User Agent,中文名为用户代理,简称UA。User Agent存放于Headers中,服务器就是通过查看Headers中的User Agent来判断是谁在访问。
通过不同的浏览器访问,会有不同的User Agent,如果爬虫不设置的话,很容易被识别出来,就会被限制访问。一般的做法是收集很多不同的User Agent,然后随机使用。
那么如何设置User Agent呢,其实是有两种方法(以python为例)的:
一、在创建Request对象的时候,填入headers参数(包含User Agent信息),这个Headers参数要求为字典。
from urllib import request
if __name__ == "__main__":
#以CSDN为例,CSDN不更改User Agent是无法访问的
url = 'http://www.csdn.net/'
head = {}
#写入User Agent信息
head['User-Agent'] = 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19'
#创建Request对象
req = request.Request(url, headers=head)
#传入创建好的Request对象
response = request.urlopen(req)
#读取响应信息并解码
html = response.read().decode('utf-8')
#打印信息
print(html)
二、在创建Request对象的时候不添加headers参数,在创建完成之后,使用add_header()的方法,添加headers。
from urllib import request
if __name__ == "__main__":
#以CSDN为例,CSDN不更改User Agent是无法访问的
url = 'http://www.csdn.net/'
#创建Request对象
req = request.Request(url)
#传入headers
req.add_header('User-Agent', 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19')
#传入创建好的Request对象
response = request.urlopen(req)
#读取响应信息并解码
html = response.read().decode('utf-8')
#打印信息
print(html)