美文网首页
scrapy基于redis分布式爬虫实现

scrapy基于redis分布式爬虫实现

作者: 特例独行的猪 | 来源:发表于2018-11-19 10:39 被阅读23次

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基于redis分布式爬虫实现

      本文链接:https://www.haomeiwen.com/subject/lhsofqtx.html