Pipeline去重操作
当item(数据)被搜集后,都会被传递到Item Pipeline进行处理,我们可以先对数据进行处理比如:去重
常见案例:
重复过滤器
一个筛选器,用于查找重复项,并删除那些已经处理过的项。假设我们的商品具有唯一的ID,但是我们的Spider会返回具有相同ID的多个商品:官方文档
from itemadapter import ItemAdapter
from scrapy.exceptions import DropItem
class DuplicatesPipeline:
def __init__(self):
self.ids_seen = set()
def process_item(self, item, spider):
adapter = ItemAdapter(item)
if adapter['id'] in self.ids_seen:
raise DropItem(f"Duplicate item found: {item!r}")
else:
self.ids_seen.add(adapter['id'])
return item
激活项目管道组件
要激活Item Pipeline组件,必须将其类添加到 ITEM_PIPELINES
设置中,如以下示例所示:
ITEM_PIPELINES = {
'myproject.pipelines.DuplicatesPipeline': 800,
}
您在此设置中分配给类的整数值确定它们运行的顺序:项目从值较低的类转到值较高的类。通常将这些数字定义在0-1000范围内。