首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在python中使用selenium定期重新检查网页

如何在python中使用selenium定期重新检查网页
EN

Stack Overflow用户
提问于 2018-07-27 04:12:51
回答 2查看 376关注 0票数 0

我刚接触python中的selenium (以及python的所有web界面应用程序),在目前的实习工作中,我有一项任务要完成。

我的脚本成功地导航到一个在线数据库,并从我的数据表中输入信息,但随后有问题的网页需要30秒到几分钟的时间来计算输出。

如何指示python每30秒重新检查一次页面,直到出现输出,以便我可以解析它以获取所需的数据?例如,我可以从哪些函数开始?

这将是一个循环的一部分,重复超过200个条目,如果我成功了,还会有数百个,所以值得我花时间将其自动化。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-27 06:59:46

您应该使用G_M和Sam Holloway指出的Seleniums。我最常用的一种是expected_conditions

代码语言:javascript
复制
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()
driver.get("http://somedomain/url_that_delays_loading")
try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "myDynamicElement"))
    )
finally:
    driver.quit()

它将一直等到有一个id为"myDynamicElement“的元素,然后执行try块,该块应该包含您剩余的工作。我更喜欢使用类By.XPATH,但是如果您将By.XPATH与presence_of_element_located方法一起使用,则添加另一个(),因此它将是this answer中提到的所需的元组

代码语言:javascript
复制
from selenium.webdriver.common.by import By

driver.find_element(By.XPATH, '//button[contains(text(),"Some text")]')
driver.find_element(By.XPATH, '//div[@id="id1"]')
driver.find_elements(By.XPATH, '//a')

查找(对我而言)元素的XPATH的最简单方法是在chrome (F12)中转到开发人员模式,按ctrl+F键,并使用鼠标和inspect,尝试组成适当的XPATH,它将足够具体,只找到预期的元素,或者尽可能少的元素。

所有示例都来自(或基于) great selenium documentation

票数 1
EN

Stack Overflow用户

发布于 2018-07-27 04:14:31

如果您只想分隔检查,则time.sleep()函数应该可以工作。

然而,正如G_M的评论所说,你应该研究一下Selenium waits。想想看:页面上是否有一个元素将指示结果已加载?如果是,请使用Selenium等待该元素,以确保您的程序只会在加载结果之前暂停,而不会在加载后浪费任何时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51546819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档