前一段写了一个爬取墨迹天气的小爬虫,今天突然发现不能用了,因为是墨迹天气,反爬机制应该没有那么严格,应该解决一下user-agent的问题就可以了,写这篇博客,说一下requests的自定义user-agent的方式。
首先登录你想要爬取的网站:
我使用的是Chrome,按F12或者右键检查,进入开发者工具,点击network,可以看到,下面是空的:
然后随便点击一下,比如,点击一下今天,可以看到发送的数据包:
任意点击一个数据包,然后在右侧headers选项中,找到user-agent:
接下来就是代码实现了,看下面代码
利用get函数提交url、cookies和headers
然后接下来就可以肆无忌惮爬取你想要的数据了。
当然网站会有很多的反爬机制,需要随机应变,至于为什么要使用我写的这个办法爬取网站,是因为很多网站都会对Headers的User-Agent进行检测,还有一部分网站会对Referer进行检测(一些资源网站的防盗链就是检测Referer)。如果遇到了这类反爬虫机制,可以直接在爬虫中添加Headers,将浏览器的User-Agent复制到爬虫的Headers中;或者将Referer值修改为目标网站域名。对于检测Headers的反爬虫,在爬虫中修改或者添加Headers就能很好的绕过。
首先登录你想要爬取的网站:
我使用的是Chrome,按F12或者右键检查,进入开发者工具,点击network,可以看到,下面是空的:
然后随便点击一下,比如,点击一下今天,可以看到发送的数据包:
任意点击一个数据包,然后在右侧headers选项中,找到user-agent:
接下来就是代码实现了,看下面代码
url = 'https://tianqi.moji.com/weather/china/henan/'+cityurl定义要爬取网址,然后headers是user-agent,cook是cookie,cookie就是你登录一个网页时提交的密码,密码向网页提交的登陆数据,简单来说,cookie就是制作一个假身份骗过海关.
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36'}
cook = {"Cookie":'BAIDUID=FE0F97F1FC37C47792091A2523CD945F:FG=1; HMACCOUNT=CC6D0E280C842123'}
response = requests.get(url, cookies=cook, headers=headers).content
利用get函数提交url、cookies和headers
然后接下来就可以肆无忌惮爬取你想要的数据了。
当然网站会有很多的反爬机制,需要随机应变,至于为什么要使用我写的这个办法爬取网站,是因为很多网站都会对Headers的User-Agent进行检测,还有一部分网站会对Referer进行检测(一些资源网站的防盗链就是检测Referer)。如果遇到了这类反爬虫机制,可以直接在爬虫中添加Headers,将浏览器的User-Agent复制到爬虫的Headers中;或者将Referer值修改为目标网站域名。对于检测Headers的反爬虫,在爬虫中修改或者添加Headers就能很好的绕过。