查看: 233|回复: 0
打印 上一主题 下一主题

如何提高爬虫采集效率

[复制链接]

9万

主题

9万

帖子

28万

积分

管理员

管理员

Rank: 9Rank: 9Rank: 9

积分
289332
跳转到指定楼层
楼主
发表于 2020-2-16 23:15:12 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
大家都知道采集数据是要花时间,可是也不能一直等着,尤其是需要采集大量数据的情况下。那么如何提高爬虫采集效率就是十分关键的,那小编带大伙儿一块去了解如何提高爬虫采集效率问题。  1.尽可能减少网站访问次数  单次爬虫的主要把时间消耗在网络请求等待响应上面,所以能减少网站访问就减少网站访问,既减少自身的工作量,也减轻网站的压力,还降低被封的风险。  第一步要做的就是流程优化,尽量精简流程,一些数据如果可以在一个网页页面内获取而不必非要在多个网页页面下获取,那就只在一个网页页面内获取。  随后去重,同样是十分重要的手段,一般根据url或者id进行唯一性判别,爬过的就不再继续爬了。  2.分布式爬虫  即便把各种法子都用尽了,单机单位时间内能爬的网页数仍是有限的,面对大量的网页页面队列,可计算的时间仍是很长,这种情况下就必须要用机器换时间了,这就是分布式爬虫。  第一步,分布式并不是爬虫的本质,也并不是必须的,对于互相独立、不存在通信的任务就可手动对任务分割,随后在多个机器上各自执行,减少每台机器的工作量,费时就会成倍减少。  例如有200W个网页页面待爬,可以用5台机器各自爬互不重复的40W个网页页面,相对来说单机费时就缩短了5倍。  可是如果存在着需要通信的状况,例如一个变动的待爬队列,每爬一次这个队列就会发生变化,即便分割任务也就有交叉重复,因为各个机器在程序运行时的待爬队列都不一样了——这种情况下只能用分布式,一个Master存储队列,其他多个Slave各自来取,这样共享一个队列,取的情况下互斥也不会重复爬取。scrapy-redis是一款用得比较多的分布式爬虫框架。  上面介绍了两种如何提高爬虫采集效率的方法,想必大伙儿都十分清楚如何提高采集的效果了,在采集的过程中还需要留意目标网站的反爬机制,亿牛云http代理一直会陪伴你们。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|IT视频教程资源网 sitemap

GMT+8, 2024-10-17 23:29 , Processed in 0.370631 second(s), 23 queries .

快速回复 返回顶部 返回列表

客服
热线

微信
7*24小时微信 客服服务

扫码添
加微信

添加客服微信 获取更多

关注
公众号

关注微信公众号