python - Python:Selenium 在可用时找不到元素
问题描述
我正在尝试抓取一个网站,并且正在使用以下代码:
import selenium
titles=[]
driver = webdriver.Chrome('chromedriver',chrome_options=chrome_options)
for i in range(len(links)):
driver.get(links[i])
time.sleep(0.5)
data = driver.find_elements_by_xpath('.//a[@class = "question-hyperlink"]')
titles.append(data[0].text)
我在 google colab 上运行此代码。我得到的问题是循环迭代某些值后数据不存储任何值。如果我重新启动内核并重新运行代码,那么代码对于较早的迭代工作正常,并且在另一个迭代中会出现同样的问题。我很困惑为什么会这样。我尝试了很多东西,但没有任何效果。另外,链接的大小很大,有什么办法可以加快速度吗?
编辑:添加了完整代码的链接: https ://colab.research.google.com/drive/1SYIA_SUPYzlR-K9ph4grNem-LbL61uB7?usp=sharing
解决方案
尝试使用WebDriverWait(driver, 10).until(data)
而不是 time.sleep(0.5)。这将等待十秒钟以使元素出现。
推荐阅读
- sql - 使用聚合函数时获取 NULL 值
- python-3.x - 在 Django 3.2 中,如何使用数组中的值初始化构造函数中的 ManyToMany 字段?
- laravel - Laravel 8:尝试在 null 上读取属性“id”
- javascript - Lerna 发布工作流程未按预期发布
- azure - 逻辑应用失败,但 ADF 中调用此逻辑应用的 Web 活动具有成功状态
- postgresql - 在 SQL (PGadmin) 中更改列类型不起作用
- c - (Game Boy Advance) 程序从 0x00000000 而不是 0x08000000 开始。如何告诉 gcc 编译到特定地址?
- flutter - Android Studio - 如何在 Flutter 项目中启用 Kotlin 文档?
- javascript - 用数组元素填充空白
- javascript - 有什么方法可以在不重新启动动画的情况下通过 element.animate 更新动画集的持续时间?