如何使用加载忽略空白字段的项目

2024-10-06 10:22:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道如何忽略没有填充所有字段的项,某种类型的删除,因为在scrapyd的输出中,我得到的页面没有填充所有字段。在

我有密码:

class Product(scrapy.Item):
    source_url = scrapy.Field(
        output_processor = TakeFirst()
    )
    name = scrapy.Field(
        input_processor = MapCompose(remove_entities),
        output_processor = TakeFirst()
    )
    initial_price = scrapy.Field(
        input_processor = MapCompose(remove_entities, clear_price),
        output_processor = TakeFirst()
    )
    main_image_url = scrapy.Field(
        output_processor = TakeFirst()
    )

分析器:

^{pr2}$

我想用Loader来做,而不需要用我自己的选择器创建(以避免处理项目两次)。我想我可以将它们放入管道中,但可能不是最好的方法,因为这些项无效。在


Tags: url密码类型fieldinputoutput页面processor
1条回答
网友
1楼 · 发布于 2024-10-06 10:22:22

数据验证是管道的典型用例之一。在您的例子中,您只需要编写少量代码来检查所需字段,大致如下:

from scrapy.exceptions import DropItem

class YourPersonalPipeline(object):
    def process_item(self, item, spider):
        required_fields = [] # your list of required fields
        if all(field in item for field in required_fields):
            return item
        else:
            raise DropItem("your reason")

您需要在中启用管道设置.pyRead more in scrapy docs。在

相关问题 更多 >