由于标签更改导致超时异常?

TimeoutException due to a change of tags?

我在 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 感兴趣。

URL here

您的路径不正确。我假设 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,你会在某个时候得到一个验证码,可能会被禁止。

不确定 HTML 该网站早些时候有什么,但我这样做 outer HTML 是为了 Trustscore

<div class="trustscore-rating"><span style="color: rgb(0, 177, 106);">100</span> / 100</div>

我查看了 HTMLDOM,我们有一个针对此 div 的独特条目。

请使用这个 css_selector :

div.trustscore-rating

代码 1 :

message = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.trustscore-rating"))).text

message = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.trustscore-rating"))).get_attribute('innerText')