1
我有以下Scrapy解析方法: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()})
但是,这看起来像编码令人难以置信的糟糕,因为该项目字典有时可能会相当大。通过检查一个属性是很奇怪的。有没有更好的办法?
谢谢。我实际上尝试过这样的事情,但它不起作用。不知道我的错误在哪里,因为我删除了该代码。 – Akustik