对同一个解析函数产生多个请求。函数 运行 的顺序是什么?废料

yield multiple request to a same parse function. what is the order of function running? Scrapy

基本上我的程序具有以下结构。

def first_parse:
  for link in links: 
    yield Request(url = link, callback = second_parse)

def second_parse:
   # webDriver.get(url) and crawl data.

我正在使用 selenium Webdriver 从 first_parse 加载 url。对于每个页面,程序都需要一些时间来加载页面并完成工作。但由于某些原因,我总是想念 link 中的一些 link。
所以我怀疑 yield 操作何时将请求发送到 second_parse,但 second_parse 仍在处理先前的请求。这样请求就错过了。我说得对吗?
如果不是,当 yield 发送请求时发生了什么?
例如,如果有 20 个 link,则 first_parse 将向 second_parse 函数发送 20 个请求。 second_parse 每个请求需要 10 秒,所以当第一个请求 运行 在 second_parse 上时,其他人会在队列中等待吗?还是刚刚离开?

您正在 second_parse() 方法中重复使用同一个 webdriver 实例。我怀疑这是导致问题的原因,因为已经实例化的 webdriver 在未完成当前页面时导航到不同的页面。您应该在 second_parse() 方法中实例化然后关闭一个 webdriver

def second_parse(self, response):
   webDriver = webdriver.Firefox()
   webDriver.get(url)

   # scrape

   webDriver.close()

这可能会导致多达 20 个浏览器同时处于活动状态。