You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Selenium遇StaleElementReferenceException,WebDriverWait无效求助

解决爬取elempleo网站时的StaleElementReferenceException异常

爬取https://www.elempleo.com/co/ofertas-empleo/55-6-millones?时,首次循环正常,第二次运行触发StaleElementReferenceException,尝试隐式等待和等待下一页按钮可点击均无效。

异常原因

StaleElementReferenceException的本质是元素引用失效:你在页面初始加载时获取了empleos元素,点击下一页后页面会重新渲染,旧的DOM结构被替换,之前保存的empleos引用已经指向不存在的元素,再次访问就会报错。

之前的等待策略只针对下一页按钮,但没有等待新的结果列表加载完成,也没有重新获取元素引用,所以问题无法解决。

修复方案

核心思路:每次页面更新后(比如点击下一页),重新获取目标元素,并等待新页面的内容完全加载。

修改后的代码示例:

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

website = 'https://www.elempleo.com/co/ofertas-empleo/55-6-millones?'
driver = webdriver.Chrome(path)
driver.get(website)

data = []
i = 0

# 处理第一页数据,等待结果列表加载完成
first_page_results = WebDriverWait(driver, 20).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, 'div.result-list.js-result-list.js-results-container'))
)
data.append(first_page_results.text.splitlines())

while i < 4:
    # 滚动到底部,确保下一页按钮可见
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    
    # 等待下一页按钮可点击并点击
    next_btn = WebDriverWait(driver, 20).until(
        EC.element_to_be_clickable((By.CSS_SELECTOR, 'a.js-btn-next'))
    )
    next_btn.click()
    
    # 等待新页面的结果列表加载完成(关键:等待新元素出现,而非复用旧引用)
    new_results = WebDriverWait(driver, 20).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, 'div.result-list.js-result-list.js-results-container'))
    )
    
    # 收集新页面数据
    data.append(new_results.text.splitlines())
    i += 1

driver.quit()

关键优化点

  • 每次跳转后重新获取元素:不再复用初始的empleos引用,每次点击下一页后,等待新的结果列表加载完成再获取新的元素引用。
  • 精准等待目标内容:点击下一页后,等待新的结果列表元素出现,确保页面内容已经完全更新,而非只等待下一页按钮可点击。
  • 修正数据收集逻辑:避免初始赋值覆盖列表,统一用append收集每一页的数据。

额外建议

  • 优先使用CSS选择器或XPath定位元素,比标签名定位更精准,减少无关元素匹配。
  • 若网站存在反爬机制,可适当增加随机等待时间(如time.sleep(1)),但优先依赖显式等待而非固定时长等待。

内容的提问来源于stack exchange,提问作者Miguel Espinosa Sierra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 17:35:12