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

Selenium遍历DataFrame时跳过部分链接问题排查

Selenium爬取随机跳过页面的问题分析及解决

为什么不是单纯的等待时长问题?

显式等待超时会直接抛出TimeoutException,如果没做异常捕获,程序会崩溃而非卡顿后继续。你遇到的卡顿后继续,本质是浏览器在等待某类资源加载超时后自行终止请求,代码未感知到页面异常,直接跳过了数据提取步骤,并非等待时长设置的问题。

随机跳过页面的核心原因

  • 页面加载异常未处理:部分页面因网络波动、反爬限制、服务器响应慢,导致页面卡住。浏览器默认等待约2分钟后放弃加载,但此时DOM结构不完整,你的代码找不到目标元素,又没加异常捕获,直接进入下一个链接。
  • 默认加载策略拖慢进程:Selenium默认的normal加载策略会等待页面所有资源(图片、广告脚本、统计JS)加载完成,第三方资源加载缓慢会导致浏览器假死2分钟,之后虽然恢复,但目标元素可能未渲染,数据提取失败。
  • 元素定位无容错机制:如果用find_element定位店铺信息,一旦元素不存在会抛出NoSuchElementException,未捕获的话会直接终止当前循环的后续操作,看起来像“跳过”。
  • 浏览器资源泄漏:爬取1800个页面后,浏览器内存、CPU占用过高,导致部分页面渲染卡顿甚至进程假死,系统恢复后页面已不可用,无法提取数据。

解决办法

  • 修改页面加载策略:用eager策略只等待DOM加载完成,跳过非必要资源:
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.page_load_strategy = 'eager'
    driver = webdriver.Chrome(options=options)
    
  • 添加异常捕获与日志:给每个页面的操作加try-except,记录失败的链接和原因:
    import logging
    
    logging.basicConfig(filename='crawl_errors.log', level=logging.ERROR)
    
    for idx, url in enumerate(df['links']):
        try:
            driver.get(url)
            # 显式等待核心元素加载
            WebDriverWait(driver, 12).until(EC.presence_of_element_located((By.CLASS_NAME, 'shop-name')))
            # 提取数据逻辑
            shop_name = driver.find_element(By.CLASS_NAME, 'shop-name').text
            shop_addr = driver.find_element(By.CLASS_NAME, 'shop-addr').text
            # 提取产品状态
            product_status = [elem.get_attribute('class') for elem in driver.find_elements(By.CLASS_NAME, 'product-item')]
            # 存入DataFrame
        except Exception as e:
            logging.error(f"链接 {url} 处理失败: {str(e)}")
            print(f"第 {idx+1} 个链接处理失败,详情见日志")
            continue
    
  • 定期重启浏览器:每爬取50-100个页面后重启浏览器,避免资源耗尽:
    if idx % 60 == 0 and idx != 0:
        driver.quit()
        driver = webdriver.Chrome(options=options)
    
  • 设置请求超时:限制浏览器请求超时时间,避免长时间卡住:
    options.add_argument('--timeout=30000')  # 30秒超时
    

内容的提问来源于stack exchange,提问作者VSherr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 07:10:58