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

使用Selenium/Safari/Python实现无限滚动爬取遇阻求助

Safari+Selenium滚动加载动态内容问题解决方案

以下是针对你遇到的滚动无效问题的针对性解决方法,结合Safari特性和博彩网站反爬逻辑:

  • 分步滚动+高度判断
    常规单次滚动可能被Safari渲染机制忽略,试试循环滚动并监听页面高度变化,确保内容加载完成:

    from selenium.webdriver.support.ui import WebDriverWait
    
    previous_height = driver.execute_script("return document.body.scrollHeight")
    # 按需循环,直到页面高度不再变化
    while True:
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        # 等待高度更新,超时时间按需调整
        try:
            WebDriverWait(driver, 5).until(
                lambda d: d.execute_script("return document.body.scrollHeight") > previous_height
            )
            previous_height = driver.execute_script("return document.body.scrollHeight")
        except:
            # 高度无变化,停止滚动
            break
    
  • 模拟真实拖拽滚动
    针对Safari对ActionChains的特殊支持,用鼠标拖拽页面的方式模拟用户操作,绕过反爬检测:

    from selenium.webdriver.common.action_chains import ActionChains
    from selenium.webdriver.common.by import By
    import time
    
    action = ActionChains(driver)
    # 点击并按住页面空白区域,向下拖拽
    action.click_and_hold(driver.find_element(By.TAG_NAME, "body"))
    action.move_by_offset(0, 600)  # 拖拽距离可根据页面调整
    action.release().perform()
    time.sleep(2)  # 等待动态内容加载
    
  • 手动触发滚动事件
    部分网站会监听scroll事件而非仅检测滚动位置,滚动后手动触发事件确保网站感知:

    # 先滚动到页面底部
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    # 触发scroll事件
    driver.execute_script("""
        const scrollEvent = new CustomEvent('scroll', {
            bubbles: true,
            cancelable: true
        });
        window.dispatchEvent(scrollEvent);
    """)
    
  • 检查Safari WebDriver配置
    确保驱动配置正确,避免环境问题导致失效:

    from selenium import webdriver
    from selenium.webdriver.safari.options import Options
    
    safari_options = Options()
    safari_options.add_argument("--enable-javascript")
    safari_options.add_argument("--disable-web-security")  # 部分网站需关闭跨域限制
    driver = webdriver.Safari(options=safari_options)
    

    同时确认Safari已开启:开发菜单→允许远程自动化。

  • 反爬绕过辅助操作
    博彩网站反爬严格,可添加以下操作提升成功率:

    • 修改浏览器UA:
      driver.execute_script("""
          Object.defineProperty(navigator, 'userAgent', {
              value: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 14_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15',
              writable: false
          });
      """)
      
    • 操作间添加随机等待:
      import random
      import time
      
      time.sleep(random.uniform(1.5, 3.5))
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:15:41