我正在使用 Selenium 從這個網站上抓取一些資料:https : //www.boerse-frankfurt.de/en/etf/ishares-core-sp-500-ucits-etf-usd-acc
我的腳本可以作業,但我需要等待 5 秒以確保資料實際可用,否則我有時(隨機)得到空白結果。
driver.get(url)
time.sleep(5)
bid = driver.find_element_by_xpath("/html/body/app-root/app-wrapper/div/div[2]/app-etp/div[2]/div[3]/div[2]/div/div[2]/app-widget-quote-box/div/div/table/tbody/tr[3]/td[1]").text
print(bid)
我嘗試使用 Selenium 的等待功能,但腳本運行很快,結果為空白:
driver.get(url)
try:
bid = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH,"/html/body/app-root/app-wrapper/div/div[2]/app-etp/div[2]/div[3]/div[2]/div/div[2]/app-widget-quote-box/div/div/table/tbody/tr[3]/td[1]"))
)
bid = bid.text
print(bid)
finally:
pass
知道如何讓 Selenium 等待抓取資料所需的時間嗎?謝謝
更新:一個簡單的 while 回圈似乎有效:
driver.get(url)
while driver.find_element_by_xpath(xpath).text == "":
pass
driver.find_element_by_xpath(xpath).text
有沒有更好的方法來做到這一點?
uj5u.com熱心網友回復:
要定位可見元素而不是presence_of_element_located(),您需要為visibility_of_element_located()引入WebDriverWait,您可以使用以下任一定位器策略:
driver.get(url)
try:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "/html/body/app-root/app-wrapper/div/div[2]/app-etp/div[2]/div[3]/div[2]/div/div[2]/app-widget-quote-box/div/div/table/tbody/tr[3]/td[1]"))).text)
finally:
pass
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/370773.html
標籤:Python 硒 硒网络驱动程序 网页抓取 硒铬驱动器
上一篇:AttributeError:move_to需要使用Selenium和Python呼叫move_to_element(by_locator)時出現WebElement錯誤
