首页 > 后端开发 > Python教程 > 为什么我在 Amazon 上进行迭代网页抓取时会遇到 StaleElementException?

为什么我在 Amazon 上进行迭代网页抓取时会遇到 StaleElementException?

Barbara Streisand
发布: 2024-11-16 11:33:03
原创
241 人浏览过

Why Am I Getting StaleElementException During Iterative Web Scraping on Amazon?

使用 Python 进行迭代网页抓取期间出现 StaleElementException

抓取 Amazon 搜索结果时,后续页面分页期间会出现 StaleElementException 和 ValueError 错误。检查该问题表明,负责导航的页面元素在初始页面加载后变得陈旧或不可用。

检查提供的代码,问题似乎可能与隐式等待有关。虽然代码指示 10 秒等待,但这并不能保证完整的 10 秒暂停。相反,它允许最长等待时间为 10 秒,但等待将在找到目标元素后结束。

为了缓解此问题,建议在执行后续操作之前采用更明确的方法来确保页面稳定性。这是一个替代解决方案:

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

driver.get('https://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=sonicare+toothbrush')

while True:
    try:
        wait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'a > span#pagnNextString'))).click()
    except TimeoutException:
        break
登录后复制

此解决方案采用显式等待来确保在尝试导航之前下一页按钮变得可单击。等待最多将持续 10 秒,或者直到找到按钮并准备好进行交互。这种方法消除了陈旧元素的问题并确保可靠的自动化。

以上是为什么我在 Amazon 上进行迭代网页抓取时会遇到 StaleElementException?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板