Scrapy:设置管道 - 如果url不包含

时间:2013-12-21 00:06:39

标签: python web-crawler scrapy

我正在尝试设置管道过滤器,如果网址不包含'133199',我想删除项目。 不幸的是,我认为我的代码不起作用。

from scrapy.exceptions import DropItem

class FilterWordsPipeline(object):

    category_filter = ['133199']
    def cat_filter(self, item, spider):
        for word in self.category_filter:
            if word in unicode(item['url']).lower():
                raise DropItem("Is not in the: %s" % category)
            else:
                return item

2 个答案:

答案 0 :(得分:1)

来自文档(http://doc.scrapy.org/en/0.20/topics/item-pipeline.html):

  

编写自己的项目管道很容易。每个项管道组件都是一个必须实现以下方法的Python类:

     

process_item(item,spider)

只需将“cat_filter”功能重命名为“process_item” 并确保在settings.py文件中有ITEM_PIPELINES = { 'myproject.pipelines.FilterWordsPipeline': 500 }之类的内容。

此外,您正在删除网址包含“133199”的项目,并让网址不包含“133199”的项目。

答案 1 :(得分:0)

你是不是只是错过了'if word in in'检查?应该是'如果不在'的话。