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

如何用Selenium+Python实现网页连续加载并解决加载失效问题

解决Selenium点击LOAD MORE后未加载新内容的问题

核心问题分析

你遇到的情况是点击"LOAD MORE"后页面未实际加载新内容,直接统计元素数量自然和点击前一致。主要原因是点击操作后没有等待页面完成异步加载,或者按钮点击时机不对、Cookie弹窗隐性干扰了交互。

具体解决方案

1. 先处理Cookie弹窗

即使你觉得弹窗不影响,它可能会占据页面焦点或干扰JS事件触发,建议先关闭:

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

# 初始化Chrome驱动
driver = webdriver.Chrome()
driver.get("https://partechpartners.com/companies")

# 等待Cookie弹窗并点击同意按钮
try:
    accept_cookie_btn = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), 'Accept')]"))
    )
    accept_cookie_btn.click()
except:
    # 若弹窗未出现,直接跳过
    pass

2. 循环点击LOAD MORE并等待加载完成

单次点击仅加载一页内容,且必须等待新元素加载完成后再继续操作:

# 记录初始元素数量
current_count = len(driver.find_elements(By.XPATH, "//h2"))

while True:
    try:
        # 等待LOAD MORE按钮可点击
        load_more_btn = WebDriverWait(driver, 10).until(
            EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), 'LOAD MORE')]"))
        )
        # 滚动到按钮位置,避免被页面元素遮挡导致点击失败
        driver.execute_script("arguments[0].scrollIntoView(true);", load_more_btn)
        load_more_btn.click()
        
        # 等待元素数量增加,确保新内容加载完成
        WebDriverWait(driver, 15).until(
            lambda d: len(d.find_elements(By.XPATH, "//h2")) > current_count
        )
        # 更新当前计数
        current_count = len(driver.find_elements(By.XPATH, "//h2"))
        print(f"当前已加载 {current_count} 条数据")
        
    except:
        # 按钮消失或不可点击,说明所有内容加载完成
        print("全部内容加载完毕")
        break

# 最终统计总数据量
final_count = len(driver.find_elements(By.XPATH, "//h2"))
print(f"总数据条数:{final_count}")

driver.quit()

3. 额外优化点

  • 避免使用time.sleep()硬等待,优先用WebDriverWait显式等待,既稳定又节省时间。
  • 若使用无头模式,需添加窗口大小参数,避免页面布局异常导致元素无法定位:
    options = webdriver.ChromeOptions()
    options.add_argument("--headless=new")
    options.add_argument("--window-size=1920,1080")
    driver = webdriver.Chrome(options=options)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 21:57:49