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

如何用Python和BeautifulSoup爬取点击按钮后才显示的隐藏文本?

动态隐藏内容爬取解决方案

你遇到的是典型的动态渲染内容爬取场景,BeautifulSoup仅支持解析页面初始加载的静态HTML,无法处理JS交互触发的内容加载,可通过以下几种方法解决:

  • 方案1:使用支持JS渲染的无头浏览器模拟用户点击操作
    这是适配性最高的方案,使用Selenium、Playwright这类工具可以启动无头浏览器,完整模拟用户点击解锁按钮的操作,等内容加载完成后再提取对应文本,几乎可以覆盖所有动态渲染场景。示例代码如下:
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.chrome.options import Options
    import time
    
    # 配置Chrome无头模式,不弹出浏览器窗口
    chrome_options = Options()
    chrome_options.add_argument("--headless=new")
    driver = webdriver.Chrome(options=chrome_options)
    
    # 打开目标页面
    driver.get("https://en.indonetwork.co.id/company/surrama-groups")
    # 定位解锁按钮,模拟点击操作
    # 可通过浏览器开发者工具的元素选择功能,复制按钮的CSS选择器替换下方占位内容
    unlock_btn = driver.find_element(By.CSS_SELECTOR, "替换为解锁按钮的CSS选择器")
    unlock_btn.click()
    # 等待2秒确保内容加载完成,也可以用WebDriverWait做显式等待更高效
    time.sleep(2)
    # 定位目标内容节点提取文本
    target_content = driver.find_element(By.CSS_SELECTOR, "替换为目标内容的CSS选择器").text
    print(target_content)
    
    # 关闭浏览器
    driver.quit()
    
  • 方案2:抓包提取动态请求接口直接调用
    点击按钮触发的内容加载一般是向后端发送AJAX请求获取数据后渲染的,你可以打开浏览器开发者工具的「网络」面板,过滤XHR/fetch类型的请求,点击解锁按钮后找到对应返回隐藏文本的接口,直接构造请求调用该接口获取数据,不需要启动浏览器,运行效率远高于无头浏览器方案。
  • 方案3:检查静态HTML是否预加载了隐藏内容
    少数场景下隐藏内容已经预加载到初始HTML中,只是通过display: none这类CSS属性做了隐藏,你可以直接用BeautifulSoup根据元素的class、id等属性定位对应节点,直接提取文本即可,不需要额外交互操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 08:09:00