Selenium/ChromeDriver Webscraping 超时异常

Selenium/ChromeDriver Timeout Exception when Webscraping

我构建了一个抓取 url 的网络抓取工具。它偶尔会出现问题(不会一直发生)。我在代码的这个特定部分得到了 TimeOutException

tries = 0
while tries<1000:
    try:  
        domain=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "cite._Rm")))
        domain = domain.text
        break
        except StaleElementReferenceException:
            tries+=1
            self.browser.refresh()

错误:

File "", line 389, in findDomains domain=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "cite._Rm"))) File "", line 78, in until raise TimeoutException(message, screen, stacktrace) TimeoutException: Message:

因为你已经将它包裹在一个 while 块中多次尝试,只需处理 TimeoutException:

try:  
    domain=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "cite._Rm")))
    domain = domain.text
    break
except (StaleElementReferenceException, TimeoutException):
    tries+=1
    self.browser.refresh()

请注意,如果无法重现问题,或者至少 link 到您描述的偶尔出现问题的目标网页,就很难说更多。

您收到超时异常,因为在超时期间未找到元素,请尝试增加它或像下面的代码一样刷新页面

tries = 0
while tries<1000:
    try:  
        domain=WebdriverWait(self.browser, timeout=10).until(
             EC.presence_of_element_located((By.CSS_SELECTOR, "cite._Rm"))
        )
        domain_text = domain.text
        break
    except TimeoutException:
        tries+=1
        self.browser.refresh()