Bootstrap

scrapy框架-pipeline数据验证

scrapy框架-pipeline数据验证

当item(数据)被搜集后,都会被传递到Item Pipeline进行处理,我们可以先对数据进行处理比如:数据验证

常见案例:

价格验证-无价格去除

让我们看一下下面的假设管道,该管道调整price不包含增值税的那些项目的 属性(price_excludes_vat属性),并删除不包含价格的那些项目:

from itemadapter import ItemAdapter
from scrapy.exceptions import DropItem
class PricePipeline:

    vat_factor = 1.15

    def process_item(self, item, spider):
        adapter = ItemAdapter(item)
        if adapter.get('price'):
            if adapter.get('price_excludes_vat'):
                adapter['price'] = adapter['price'] * self.vat_factor
            return item
        else:
            raise DropItem(f"Missing price in {item}")

激活项目管道组件

要激活Item Pipeline组件,必须将其类添加到 ITEM_PIPELINES设置中,如以下示例所示:

ITEM_PIPELINES = {
    'myproject.pipelines.PricePipeline': 800,
}

您在此设置中分配给类的整数值确定它们运行的顺序:项目从值较低的类转到值较高的类。通常将这些数字定义在0-1000范围内。

;