对于爬虫攻城狮而言,爬虫的最大敌人就是反爬虫。在多次请求网页时(爬取大量url时),避免被地方*掉,User-agent代理的随机跳变就成了反爬虫的的第一步也是必须的一步的拉。
一:设置随机User-agent(User-agent文件自行准备)
scrapy里怎么随机跳变User-agent呢?当scrapy项目创建完成,执行爬虫程序时,首先会先读取setting文件的配置,而在框架机制里又存在一个下载中间件,默认时setting里是关闭的,所以要先开启其实也就是去点注释。如图:
注释完后就填补程序:如图:
然后填补下爬虫程序,进行测试是否会产生不同的user-agent
可以看出每次请求返回的User-agent不同。
二:scrapy爬取大量不同的网页
在使用scrapy框架时,对于一般的爬虫工程师,着重注重的是Spiders的爬虫文件,如果对scrapy有一些认识,并读过Spider源码,实现大量无规律的网页爬取并不是一件难事。
当爬虫程序启动时,会先初始化读取爬虫名,爬虫网站的域名,需要爬取的url,获取到start_urls后,会调用start_requests函数遍历start_urls集合,最后在发请求。源码如下:
即:1:当url量很大时,需要重写start_requests方法,以读文件的形式加载url
2:当url量很少时,可以直接写在start_urls集合里
本文是用的是第一种方法:
这样大量url的加载就完成了。
三:设置并发数
前面提到,当爬虫程序启动时会先的读取setting配置文件,如图是文件的设置:
建议一定要设置下载延迟,如果你设置请求数过大,没有下载延迟,网页可能会响应不及时,另外,爬虫攻城狮当然也是有高尚素质的,肯定会给做网站留点活路的。