首页 > 解决方案 > 由于标签更改导致的 TimeoutException?

问题描述

我在使用 TimeoutException 时遇到了一些问题。

我的代码在过去几天一直运行良好,但今天发生了一些变化,因为我收到了 TimeoutException 错误消息。更有可能是由于网站上的定位器更改。

我的代码结构如下:

# Initialise Chrome parameters
chrome_options = webdriver.ChromeOptions()

# Open Chrome
driver=webdriver.Chrome(path,chrome_options=chrome_options)
driver.maximize_window()
    
response=driver.get(my_web)


wait = WebDriverWait(driver, 30)
time.sleep(randrange(5))
driver.execute_script("window.scrollTo(0, 1000)")


message = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR,"section.section div.container h2"))).text
        t_score = wait.until(EC.visibility_of_element_located((By.XPATH, "//div[text()='Trustscore']/../following-sibling::div/descendant::div[@class='icon']"))).text

我曾尝试将等待时间更改为 60 秒,但由于我遇到相同的错误,因此没有任何改变。

由于以下原因返回错误:section.section div.container h2.我对 Trustscore 感兴趣。

网址在这里

标签: pythonseleniumselenium-webdriverweb-scrapingselenium-chromedriver

解决方案


你的路径不正确。我假设html已经改变。你可以使用:

message = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR,".trustdata-alert strong:last-child"))).text
t_score = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".trustscore-rating"))).text

然而,

  1. 您需要更好的等待条件,因为评级可能会很慢才能完全更新,从而导致打印不正确的值。

  2. 有反机器人 cloudflare 措施,这意味着抓取可能会违反 T&C,并且您会在某个时候获得验证码,并且可能会被禁止。


推荐阅读