分布式爬虫—原理与实现

分布式爬虫,就是...我还是上图吧
先来看scrapy的结构图

原理

image.png

这就是scrapy爬虫框架的流程
从下往上看,Spiders生成的请求经由Scheduler调度器发送给Downloader下载器,Downloader下载器从internet下载所需要的网络数据,返回response给Spiders,Spiders接着把数据放进item容器
而scrapy-redis就是建立一个redis队列,调度器把Spiders生成的请求发送给redis队列,再用Scheduler从队列里取出请求,其他爬虫也可以从队列中取出请求。


scrapy-redis .jpg

队列与调度.jpg

每一个爬虫的调度器Scheduler都从队列中取出请求和存入请求,这样就实现多个爬虫,多台机器同时爬取的目标
scrapy-redis分布式框架还有两个常用的功能,去重和启动判断(可以接着暂停的地方继续爬)

怎么用

pip3 install scrapy
pip3 install scrapy-redis
在settings中替换调度器

SCHEDULER = "scrapy_redis.scheduler.Scheduler"
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
ITEM_PIPELINES = {
    'scrapy_redis.pipelines.RedisPipeline': 300
}#把item存到远程主机的redis中,好处是可以集中存储,坏处的降低速度
REDIS_HOST = 'localhost'#远程主机中redis的host和端口
REDIS_PORT = 6379
如果redis有密码
用REDIS_URL = 'redis://user:pass@hostname:9001'
SCHEDULER_FLUSH_ON_START = True#False是重启爬虫后请求队列,重新爬取,默认是注释掉,不用改

至于去重,scrapy-redis的队列会为每个请求生成一个指纹,把请求存入队列中时会先判断指纹,重复就不存。
什么?你还不会再服务器中安装redis,那还玩什么分布式爬虫,赶紧来这里学

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 引言 在上篇使用Scrapy爬取知乎用户信息我们编写了一个单机的爬虫,这篇记录了使用Scrapy-Redis将其重...
    朱晓飞阅读 11,707评论 1 24
  • Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化...
    Evtion阅读 11,255评论 12 18
  • 前言 scrapy是python界出名的一个爬虫框架。Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应...
    以后的以后_hzh阅读 6,848评论 0 14
  • 垄断,经济学术语。本意是指在市场上,可以根据自己的利益需求,调节价格与产量。简单的说,就是一家独大,谁也无法替代。...
    第二颗心脏阅读 1,040评论 0 2
  • 我从10楼楼顶跳了下去。 至于我为什么要跳下去,在我下坠的那一刻已经记不起原因了,我想大概是因为在生活中处处碰...
    我们都不是无辜的阅读 1,333评论 0 0

友情链接更多精彩内容