如何指示Scrapy不序列化项字段?

2024-10-01 09:36:23 发布

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

作为熟悉Scrapy的学习实验,我正在编写一个Scraper,它检查HTML页面的所有链接,并报告指向它们的HTTPHEAD请求的状态代码。事实上,在我的一个条目定义中,我有一个条目字段,即parent_url,被视为元数据,也就是说,我并不想在Scraper的输出中显示它。在

parent_urlLinkItem类中定义,如下所示:

class LinkItem(Item):
    name = Field()
    url = Field()
    parent_url = Field()   # Identifies what URL this item was extracted from
    status_code = Field()

为了从Spider的输出中省略parent_url,我尝试了:

  1. __init__中的parent_url定义为实例属性-我在尝试访问它时引发了异常
  2. __init__内赋值给self["parent_url"],但是正如文档Scrapy已经指出的那样,不允许分配给未声明的字段
  3. Field(serializer=None)或{}分配给parent_url,这会在抓取时产生连续的异常,并且JSON输出只有逗号。在

由于还没有找到解决办法,我正在寻求外部帮助。parent_url字段/属性在管道内部使用,我不知道用什么替代它。在


Tags: urlfield属性定义init链接html报告
2条回答

BaseItemExporter是所有内置导出器的基本抽象类,它提供了一个带有要导出的字段名列表的fields_to_export属性。这是医生说的,我很惊讶我以前没注意到。在

您可以指定字段,这些字段应该通过FEED_EXPORT_FIELDS设置导出。例如:

# in `settings.py`
FEED_EXPORT_FIELDS = ['name', 'url', 'status_code']

相关问题 更多 >