1、尽量减少网站访问量。
一次爬虫主要在网络请求等待响应上花费时间,尽量减少网站访问量,减轻自己的工作量,减轻网站压力,降低封闭风险。
首先要做的化流程,尽量简化流程,避免多页重复获取。
接着去重,一般根据url或id进行唯一的判的就不再继续爬了。
2、分布式爬虫:即使用尽了各种方法,单机单位时间内可以抓取的网页数量仍然是有限的。
面对大量的网页队列,可以计算的时间还是很长的。这种情况下就必须要用机器换时间了,这就是分布式爬虫。
分布式不是爬虫的本质,也不是必须的。对于相互独立、无通信的任务,可以手动分割任务,然后在多台机器上执行,减少每台机器的工作量,时间会成倍减少。
举例来说,有200W的网页要爬,可以用5台机器各自爬40W的网页互不重复,相对来说单机费时就缩短了5倍。
如果有需要通信的情况,比如一个变更的待爬行队列,每次爬行都会发生变化,即使分割任务有交叉重复,只能采用分布式。一个Master存储队列,其他多个Slave分别提取,共享一个队列,提取时即使斥责也不会反复提取。scrapy-redis是一款用得比较多的分布式爬虫框架。还有一种办法就是使用网速稳定的辅助爬虫
上述两种提高爬虫采集效率的方法,希望对您有所帮助,除此之外,在采集过程中还要注意目标网站的反爬机制。
(推荐操作系统:windows7系统、Internet Explorer 11,DELL G3电脑。)