发布时间:2020-11-27 16:06:55
很多爬虫工作者都遇到过抓取非常慢的问题,尤其是需要采集大量数据的情况下,那么怎样提高爬虫采集效率就十分关键,小编今天带大家一起了解下。
1.尽可能减少网站访问次数
单次爬虫主要把时间消耗在网络请求等待响应上面,尽可能的减少网站访问,这样既减轻了自身的工作量,也减轻了网站的压力,还降低被封的风险。
第一步要做的就是流程优化,尽量精简流程,避免在多个页面重复获取。
随后去重,一般根据url或者id进行唯一性判别,爬过的就不再继续爬了。
2.分布式爬虫
即便把各种法子都用尽了,单机单位时间内能爬取的网页数量仍是有限的,面对大量的网页页面队列,可计算的时间还是很长。这种情况下就必须要用机器换时间了,这就是分布式爬虫。
分布式并不是爬虫的本质,也并不是必须的,对于互相独立、不存在通信的任务可手动对任务分割,随后在多个机器上各自执行,减少每台机器的工作量,费时就会成倍减少。
例如有200W个网页页面待爬,可以用5台机器各自爬互不重复的40W个网页页面,相对来说单机费时就缩短了5倍。
如果存在需要通信的状况,例如一个变动的待爬队列,每爬一次这个队列就会发生变化,即便分割任务也有交叉重复,这种情况下只能用分布式。一个Master存储队列,其他多个Slave各自来取,这样共享一个队列,取的情况下互斥也不会重复爬取。scrapy-redis是一款用得比较多的分布式爬虫框架。
以上就是两种提高爬虫采集效率的方法,希望能对你有所帮助,除此之外在采集的过程中还需要留意目标网站的反爬机制。
飞猪IP代理,自建200+机房,数万拨号线路,提供企业级HTTP代理服务,IP覆盖全国200+城市,高匿名代理IP帮助你保护个人隐私。无论是网络爬虫、互联网营销、投票打榜都可以使用。
大客户
微信
置顶