作为熟悉Scrapy的学习实验,我正在编写一个Scraper,它会检查HTML页面的所有链接,并报告指向它们的HTTP HEAD请求的状态代码。事实上,在我的一个项目定义中,我有一个项目字段,即parent_url
,被视为元数据 - 也就是说,我并不是要在我的Scraper输出中显示它。
parent_url
在LinkItem
类中定义,如下所示:
class LinkItem(Item):
name = Field()
url = Field()
parent_url = Field() # Identifies what URL this item was extracted from
status_code = Field()
为了从我的Spider输出中省略parent_url
,我尝试过:
parent_url
中定义__init__
作为实例属性 - 我在尝试访问时遇到异常; self["parent_url"]
内的__init__
,但正如文档中已经注意到的,Scrapy不允许分配到未声明的字段; Field(serializer=None)
或Field(serializer=empty_function)
分配给parent_url
,这会在抓取时生成连续异常,并且只使用逗号生成JSON输出。尚未找到解决方案,我正在寻求外部帮助。 parent_url
字段/属性在管道内部使用,我不知道还有什么可以替代它。
答案 0 :(得分:1)
您可以指定应通过FEED_EXPORT_FIELDS设置导出的字段。例如:
# in `settings.py`
FEED_EXPORT_FIELDS = ['name', 'url', 'status_code']
答案 1 :(得分:0)
BaseItemExporter
是所有内置导出器的基本抽象类,它提供了一个fields_to_export属性,其中包含要导出的字段名称列表。这是正确的文件,我很惊讶我以前没有注意到它。