gpt4 book ai didi

python - 使用 selenium 和 python 等待表完全加载

转载 作者:太空宇宙 更新时间:2023-11-03 15:12:04 26 4
gpt4 key购买 nike

我想从表格中的页面中抓取一些数据。所以我只关心表中的数据。早些时候我使用 Mechanize,但我发现有时会丢失一些数据,尤其是在表格底部。谷歌搜索,我发现这可能是由于 mechanize 没有处理 Jquery/Ajax。

所以我今天改用了 Selenium。如何等待一个且只有一个表完全加载,然后使用 selenium 和 python 从该表中提取所有链接?如果我等待完整页面加载,则需要一些时间。我想确保只加载表中的数据。我当前的代码:

driver = webdriver.Firefox()for page in range(1, 2):    driver.get("http://somesite.com/page/"+str(page))    table = driver.find_element_by_css_selector('div.datatable')    links = table.find_elements_by_tag_name('a')    for link in links:        print link.text

最佳答案

使用WebDriverWait等到找到 table :

from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

...
wait = WebDriverWait(driver, 10)
table = wait.until(EC.presence_of_element_located(By.CSS_SELECTOR, 'div.datatable'))

这将是一个显式等待


或者,您可以制作驱动程序 wait implicitly :

An implicit wait is to tell WebDriver to poll the DOM for a certain amount of time when trying to find an element or elements if they are not immediately available. The default setting is 0. Once set, the implicit wait is set for the life of the WebDriver object instance.

from selenium import webdriver

driver = webdriver.Firefox()
driver.implicitly_wait(10) # wait up to 10 seconds while trying to locate elements
for page in range(1, 2):
driver.get("http://somesite.com/page/"+str(page))
table = driver.find_element_by_css_selector('div.datatable')
links = table.find_elements_by_tag_name('a')
for link in links:
print link.text

关于python - 使用 selenium 和 python 等待表完全加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25221580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com