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

Python点击“显示更多”按钮后爬取数据问题求助(URL无变化)

解决动态加载内容爬取问题

你的问题出在点击按钮后用requests.get(url)重新请求页面——这类“显示更多”按钮通常是通过AJAX动态加载内容,页面URL不会变化,而requests只能获取页面初始的静态HTML,拿不到浏览器执行JS后渲染的新内容。

正确的做法是直接从Selenium控制的浏览器页面中提取点击后的内容,步骤如下:

  • 点击按钮后,必须等待内容加载完成(避免因加载未完成拿到旧数据)
  • 直接从driver中获取页面源码或具体元素,无需再用requests请求

修正后的代码示例:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# 初始化浏览器(示例用Chrome,需对应配置驱动)
driver = webdriver.Chrome()
driver.get("你的目标页面URL")

# 点击"显示更多"按钮
driver.find_element("xpath", "//button[@id='gsc_bpf_more']").click()

# 显式等待:等待加载后的元素出现(根据实际页面调整定位方式和等待条件)
# 比如等待新的条目加载完成,这里假设新内容的元素class是gsc_a_tr
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CLASS_NAME, "gsc_a_tr"))
)

# 获取点击后的页面源码,后续可用BeautifulSoup等工具解析
page_source = driver.page_source

# 或者直接提取具体元素内容,比如所有条目文本
items = driver.find_elements(By.CLASS_NAME, "gsc_a_tr")
for item in items:
    print(item.text)

# 关闭浏览器
driver.quit()

关键说明

  • 显式等待比强制等待(time.sleep())更可靠,能在内容加载完成后立即执行后续操作
  • 若点击按钮后需要多次加载(比如连续点击“显示更多”直到全部内容加载),可以用循环+判断条件实现(比如判断按钮是否还可点击)

内容的提问来源于stack exchange,提问作者Abdullah N Bani Yaseen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 12:45:52