美文网首页
Scrapy使用Pipeline过滤重复数据

Scrapy使用Pipeline过滤重复数据

作者: MR_ChanHwang | 来源:发表于2018-03-24 11:07 被阅读0次
    1. 在pipelines.py中自定义DuplicatesPipeline类:
    class DuplicatesPipeline(object):
        """
        去重
        """
    
        def __init__(self):
            self.book_set = set()
    
        def process_item(self, item, spider):
            name = item['name']
            if name in self.book_set:
                raise DropItem("Duplicate book found:%s" % item)
    
            self.book_set.add(name)
            return item
    
    • 增加构造器方法,初始化用于去重的集合。
    • 在process_item方法中,先取出item的name字段,检查书名是否已存在集合book_set中,如果存在,抛出DropItem异常,将item抛弃;否则,将item的name字段存入集合,返回item。
      然后在配置文件settings.py中启用DuplicatesPipeline:
    ITEM_PIPELINES = {
        'example.pipelines.DuplicatesPipeline': 350,
    }
    

    即可实现去重。

    相关文章

      网友评论

          本文标题:Scrapy使用Pipeline过滤重复数据

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