[英]Scrapy Spider only generates one item per loop
由於我在for循環的末尾添加了另一個請求以測試鏈接,因此Spyder僅為循環的第一個索引生成Items。
def parse_product_page(self, response):
products = response.xpath('//div[@class="content"]//div[@class="tov-rows"]//div[@class="t-row"]')
for x, product in enumerate(products): #ERROR: Just gives an item for the first product
product_loader = VerbraucherweltProdukt()
product_loader['name'] = product.xpath(
'//div[@class="t-center"]//div[@class="t-name"]/text()').extract_first()
request = scrapy.Request(non_ref_link,callback=self.test_link, errback=self.test_link)
request.meta['item'] = product_loader
yield request
當我剛剛產生產品項時,所有這些都起作用了,但是由於該項是在回調中返回的,所以我不知道問題出在哪里。
回調只是:
def test_link(self, response):
item = response.meta['item']
item['link_fehlerhaft'] = response.status
yield item
還有完整的代碼,也許問題出在其他地方: http : //pastebin.com/tgL38zpD
這是您的罪魁禍首:
link = product.xpath('//div[@class="t-right"]//a/@href').extract_first()
您沒有將遞歸xpath固定在您擁有的產品節點上。 要解決它,只需預先添加.
到您的xpath,以指示當前節點為根:
link = product.xpath('.//div[@class="t-right"]//a/@href').extract_first()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.