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

使用Selenium爬取带Load More按钮的动态网站时无法点击按钮的问题

解决“Load More”按钮无法点击的爬取问题

针对你爬取https://cellphones.com.vn/catalogsearch/result?q=tivi时无法点击“Load More”按钮的问题,给你几个可行的解决方向:

  • 确保元素在视口内
    很多时候按钮存在但不在当前可见区域,直接调用click()会失效。可以先通过JS滚动到按钮位置,再执行点击:

    button = driver.find_element(By.CSS_SELECTOR, "button[class*='load-more-btn']")
    driver.execute_script("arguments[0].scrollIntoView(true);", button)
    button.click()
    
  • 使用显式等待替代直接查找
    页面动态加载时,直接find_element可能在元素还未渲染完成时就执行,导致找不到元素。改用WebDriverWait等待元素可点击:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    while True:
        try:
            # 等待按钮可点击,最长等待10秒
            button = WebDriverWait(driver, 10).until(
                EC.element_to_be_clickable((By.CSS_SELECTOR, "button[class*='load-more-btn']"))
            )
            driver.execute_script("arguments[0].scrollIntoView(true);", button)
            button.click()
            # 等待新内容加载,可根据加载后的产品元素变化优化等待逻辑
            time.sleep(2)
        except:
            break
    
  • 验证CSS选择器的准确性
    右键按钮→检查元素,确认实际的按钮class是否存在动态变化(比如带后缀active或其他变体),换用更稳定的属性选择器,比如如果按钮有data-action="load-more"这类属性,可以写成button[data-action='load-more']。

  • 替代方案:直接调用接口
    打开浏览器Network标签,点击“Load More”时观察XHR请求,直接模拟该请求获取数据,比Selenium点击更高效稳定。你可以复制请求的URL、请求头和参数,用requests库循环发送请求获取分页数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:25:03