上一篇介绍了如何用requests库爬取网络上的图片,但是有的网页可能用上一篇的代码无法爬取,会出现错误,这篇文章着重讲一讲为什么爬取失败的原因之一:网页端有反爬功能,可以检测python爬虫的头部信息,从而发现是爬虫在访问网页,而不是真人用户
首先,我们要看看python爬虫的头部信息有哪些,requests库的request方法就有这个功能,代码如下:
url = "https://img-operation.csdnimg.cn/csdn/silkroad/img/1651918083872.png"
r = requests.get(url)
print(r.request.headers)
运行结果:
{'User-Agent': 'python-requests/2.27.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}
可以看到爬虫的头部信息里的User-Agent写的是python-requests/2.27.1,也就是说,python直接告诉了网页端自己是个爬虫,所以当然会被禁止访问,因此,我们要修改User-Agent的值,使得网页端认为是用户再用浏览器正常仿问网页,而不是爬虫。所以,我们可以将User-Agent修改为Mozilla/5.0,这是一个通用的浏览器标识字段。当然,你也可以使用浏览器的开发者工具查找你所用的浏览器的User-Agent&#