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

如何用Python+Selenium点击带button角色的Load more按钮爬取网页?

解决Selenium点击"Load more"按钮的方案

定位与点击思路

目标按钮是Material UI组件,文本显示为Load mor...,可通过以下几种方式定位并点击:

方法1:通过部分文本定位

利用XPATH匹配按钮的部分文本内容,等待按钮可点击后执行点击:

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

driver = webdriver.Chrome()
driver.get("你的目标网站URL")

# 等待按钮加载完成并可点击
load_more_btn = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, "//span[contains(text(), 'Load mor')]"))
)
load_more_btn.click()

方法2:结合组件类名定位

针对Material UI的按钮类(忽略动态数字后缀),配合文本匹配定位:

load_more_btn = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, "//span[contains(@class, 'MuiButton-root') and .//span[contains(text(), 'Load mor')]]"))
)
load_more_btn.click()

常见问题处理

  • 点击无响应:若按钮被页面元素遮挡,改用JS执行点击:
driver.execute_script("arguments[0].click();", load_more_btn)
  • 循环加载直到内容全部加载:如果按钮在加载完所有内容后会隐藏,可通过循环点击直到无法找到按钮:
while True:
    try:
        load_more_btn = WebDriverWait(driver, 5).until(
            EC.element_to_be_clickable((By.XPATH, "//span[contains(text(), 'Load mor')]"))
        )
        driver.execute_script("arguments[0].click();", load_more_btn)
    except:
        # 按钮不存在,停止循环
        break
  • iframe嵌套问题:检查页面是否存在iframe,若按钮在iframe内,需先切换到iframe再操作:
# 假设iframe有id为"target-iframe",或用其他方式定位iframe
iframe = driver.find_element(By.ID, "target-iframe")
driver.switch_to.frame(iframe)
# 之后再执行按钮定位和点击操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:22:36