我正在尝试设置管道过滤器,如果网址不包含'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
答案 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'检查?应该是'如果不在'的话。