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