簡體   English   中英

Scrapy Spider每個循環只會產生一項

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM