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