scrapy基于redis分布式爬虫实现

Scrapy基于redis分布式爬虫的主要实现类

1:queue实现,这是scheduler调度得一个重点,所有的消息都通过消息队列来调度,采用redis得set/list数据结构来实现

2:sceduler,根据scrapy得架构中,scheduler负责request得调度:


主要实现方法:

  from_crawler(cls,crawler) 用来使用settings得配置,通过内置参数crwler.settings来获得settings对象,这是一个classmethod

  has_pending_requests(self) 用来判断是否有request在等待

open(self,spider) 用来打开消息队列

close() 关闭消息队列

enqueue_request(self,request) 将request加入消息队列


next_request(self)  从消息队列中取出request

3:spider:

    spider其实是Spider Middleware 主要方法:

    from_crawler(cls,crawler)


4:filter:

      scrapy过滤重复异常的url,继承BaseDupeFilter,主要实现方法:

      from_settings(cls,settings) 获得settings配置文件的配置信息

      request_seen(self,request) 查看是否重复url,通过scrapy.utils.request类获得reqeust指纹,标识request的唯一性


总的思想来说,就是将scrapy中的scheduler进行重写,消息队列变成从redis中获取数据和写入redis中。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化...
    Evtion阅读 5,891评论 12 18
  • 背景 部门(东方IC、图虫)业务驱动,需要搜集大量图片资源,做数据分析,以及正版图片维权。前期主要用node做爬虫...
    字节跳动技术团队阅读 7,741评论 1 67
  • 引言 在上篇使用Scrapy爬取知乎用户信息我们编写了一个单机的爬虫,这篇记录了使用Scrapy-Redis将其重...
    朱晓飞阅读 6,739评论 1 24
  • 一书一世界对女性来说是一本非常好的书,读一书一世界这本好书,可以让你舒缓心伤,让受伤的心灵得到抚慰。 书...
    雪儿好阅读 192评论 0 0
  • “朋友圈最好笑的点开全文有哪些”by——逗绝一隅 ① 以前虽然穷,但是开心,现在不同了 . . . . . 现在不...
    逗绝一隅阅读 273评论 0 0