现在的爬虫越来越难,各大网站为了预防不间断的网络爬虫,都相应地做出了不同的反爬机制,那么如何能够在不被封IP的情况,尽可能多得爬取数据呢?这里主要介绍到一些通用的反爬措施,虽然不一定适合所有网站,但是大部分网站的爬取,个人认为还是可以的。本文主要介绍到User-Agent,Cookie,Referer,time.sleep()设置睡眠间隔,ProxyPool之IP池的搭建,小伙伴们各取所需!
由于后续爬虫案例都默认自带这些反爬技术,所以这里就统一详细介绍下,后续案例就不再过多涉及,废话不多说,开始展开!
1. user-agent
user-agent:是识别浏览器的一串字符串,相当于浏览器的身份证,在利用爬虫爬取网站数据时,频繁更换User-agent可以避免触发相应的反爬机制;
这里,就用到了fake-useragent包,这个包对频繁更换User-agent提供了很好的支持,可谓防反爬利器,那么它如何使用呢?
(1)安装:直接在anaconda控制台安装fake-useragent包即可;
pip install fake-useragent
(2)具体代码使用:
from fake-useragent import UserAgent
ua = UserAgent()
headers = {
'User-Agent' : ua.random #随机生成一个UserAgent
}
url = 'https://www.baidu.com/'
page = requests.get(url, headers=headers)
2. cookie,referer设置
(1)Cookie
在我们每次访问网站服务器的时候,服务器都会为在我们本地设置cookie,为什么要设置cookie呢?因为服务器要了解我们的身份。在我们下一次访问该服务器的时候,都会带上这个cookie,表明我们的身份。(例如我们在登陆某个网站的时候,在一段时候内再次进行访问,就不需要二次登录)
那么,每个网站的Cookie都不一样,如何找到自己需要的呢?
首先,打开一个特定的网站,比如58同城二手房https://bj.58.com/ershoufang/;在网页空白处右键(最好是chrome或者Firefox),点击【检查】,出现如下图所示的框(右边即为浏览器检查界面)。
4步走:① 选择【Network】②选择【XHR】③点击浏览器刷新按钮④找到对应的网站请求,点击打开即可。
(2)Referer<