注册
登录
提问时间:2018/7/5 14:47:07    楼主:未知网友   阅读量:301

对于大规模爬虫来说,效率是最核心的问题,没有效率,就没有意义。没有哪个公司或者个人愿意等一个月或者几个月才能爬取几十万上百万的页面。所以,对于大规模爬虫来说,优化流程非常必要,提升效率十分重要。

一、尽量减少访问次数。

单次爬虫任务的主要耗时在于网络请求等待响应,所以能减少网络请求就尽量减少请求,既能减少目标网站的压力,也能减少代理服务器的压力,同时还能减少自己的工作量,提高工作效率。

二、精简流程,减少重复。

大部分网站并不是严格意义的互不交叉的树状结构,而是多重交叉的网状结构,所以从多个入口深入的网页会有很多重复,一般根据url或者id进行唯一性判别,爬过的就不再继续爬了。一些数据如果可以在一个页面内获取到,也可以在多个页面下获取到,那就只在一个页面内获取。

三、多线程任务。

大量爬虫是一个IO阻塞的任务,因此采用多线程的并发方式可以有效地提高整体速度。多线程可以更好的提高资源利用率,程序设计也更加坚定,程序响应也更快。

四、分布式任务。

上面三点都做到极致了,但是单机单位时间内能爬取到的网页数量还不足以达到目标,在指定时间内不能及时的完成任务,那么只能多机器来同时进行爬虫任务了,这就是分布式爬虫。比如有100W个页面待爬,可以用5台机器分别爬互不重复的20W个页面,相对单机耗时就缩短了5倍。

做好以上四点,基本上可以将爬虫的效率提升一大截,既减少工作量又节约时间,同时也可以减少反爬虫策略的触发,一举多得。