scrapy排重机制

在 Wed 16 September 2015 发布于 源码分析 分类 • 标签为 scrapy, Python, 爬虫

本篇文章主要的内容是scrapy在单机排重下的机制, 并提共分布式scrapy爬虫服务的url排重方案

scrapy在单机下设置url是否排重过滤很简单, 在每次抛出对该url构造的Request对象给调度器(schedler)时候, 设置Request的参数dont_filter 是否为True来让schedler判断时候对其走排重过滤的逻辑, dont_filter的默认值为False, 即该url会走排重逻辑 源码逻辑如下:

    def enqueue_request(self, request):
        if not request.dont_filter and self.df.request_seen(request):
            self.df.log(request, self.spider)
            return False
        dqok = self._dqpush(request)
        if dqok:
            self.stats.inc_value('scheduler/enqueued/disk', spider=self.spider)
        else …

阅读全文