我有以下 Scrapy 解析方法:
def parse(self, response):
item_loader = ItemLoader(item=MyItem(), response=response)
for url in response.xpath('//img/@src').extract():
item_loader.add_value('image_urls', response.urljoin(url))
yield item_loader.load_item()
# If item['images_matched'] == True:
# yield Request(links, callback=parse)
这会将提取的图像 URL 发送到 ImagePipelines。如果满足某个条件,我需要让 Scrapy 从该页面抓取其他链接......类似于......图像内容的校验和与哈希列表匹配。
我的问题是,一旦在 ImagesPipeline 中完成并填充了所有数据,我不知道如何访问该项目。item['images_matched']
解析方法中没有填充含义,而是在管道中填充了含义。在访问该项目或对此的不同方法方面需要帮助
编辑:我发现在 之后添加以下内容是yield
有效的。
yield Request(link, callback=parse, meta={'item': item_loader.load_item()})
然而,这对我来说似乎是非常糟糕的编码,因为项目字典有时可能非常大。传递它只是为了检查一个属性是很奇怪的。有没有更好的办法?