Python网络爬虫模拟浏览器访问的三种方法

设置User Agent模拟浏览器访问

在使用User Agent模拟浏览器访问前,我们需要先知道浏览器中具体的用户代理值,方法十分简单,首先打开任意浏览器,打开任意界面,按下F12,出现如图所示界面

分别选中Network与All,再进行任意一个例如点击之类的活动,出现如下变化

再点击里面的任意一个,出现一系列内容,选中Headers

在右边找到User Agent,后面的一大串内容即为用户代理值

方法一

使用urllib.request.build_opener()修改报头来模拟浏览器访问

1
2
3
4
5
6
7
import urllib.request
url = "http://blog.csdn.net"
# 报头格式header=("User-Agent",具体用户代理值),以元组形式存
headers = ("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36")
opener = urllib.request.build_opener() # 得到一个opener对象
opener.addheaders = [headers] # 使用opener对象的addheaders属性来添加报头
reponse = opener.open(url) # 注意是open(),不是urlopen()

方法二

使用add_header()修改报头实现浏览器的模拟

1
2
3
4
5
import urllib.request
url = "http://blog.csdn.net"
req = urllib.request.Request(url)
req.add_header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36")
reponse = urllib.request.urlopen(req)

方法三

构建Request请求时传入headers参数

1
2
3
4
5
6
import urllib.request
url = "http://blog.csdn.net"
head = {}
head['User-Agent'] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36"
req = urllib.request.Request(url, headers = head)
reponse = urllib.request.urlopen(req)