抓取 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中文网其他相关文章!