簡體   English   中英

Scrapy在parse中沒有yield request后直接停止

[英]Scrapy stops directly after I don't yield a request in parse

我正在嘗試制作一個通過一定數量的起始 url 的蜘蛛,如果結果頁面是正確的,我會產生另一個請求。 問題是,如果我嘗試不產生第二個請求,蜘蛛將直接停止。 如果我 yield 第二個請求沒有問題。

這是相關代碼:

def start_requests(self):
        urls = ['https://www.hltv.org' + player for player in self.hashPlayers]
        print(len(urls))
        for url in urls:
            return [scrapy.Request(url=url, callback=self.parse)]

    def parse(self, response):
        result = response.xpath("//div[@class = 'playerTeam']//a/@href").get()
        if result is None:
            result = response.xpath("//span[contains(concat(' ',normalize-space(@class),' '),' profile-player-stat-value bold ')]//a/@href").get()

        if result is not None:
            yield scrapy.Request(
                url = "https://www.hltv.org" + result,
                callback = self.parseTeam
            )

所以我想要一種方法讓蜘蛛在我調用解析 function 之后繼續並且不產生請求。

def start_requests(self):
    urls = ['https://www.hltv.org' + player for player in self.hashPlayers]
    print(len(urls))
    for url in urls:
        return [scrapy.Request(url=url, callback=self.parse)]

如果您使用return , function 將終止,循環將不會迭代到下一個值,並且單個請求將發送到 Scrapy 引擎。 yield替換它,這樣它就返回一個生成器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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