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

基于Jsoup的网页抓取:提取嵌套链接动态标题的方法问询

如何提取网页中的动态嵌套标题(以Google搜索结果为例)

嘿,我来帮你搞定这个问题!你已经能抓取静态的头部信息,但像谷歌搜索里“显示X条搜索结果”这种动态内容,本质是页面加载后由JavaScript渲染生成的,普通的静态HTML抓取工具(比如requests)根本拿不到——因为源码里压根没有这段内容,它是浏览器运行JS后才生成的。

下面给你分步骤拆解解决方案:

1. 先搞清楚:目标内容是静态还是动态?

先做个简单判断:

  • 静态内容:右键页面→“查看页面源代码”,直接能搜到的文字
  • 动态内容:源码里搜不到,但在浏览器开发者工具的「Elements」标签里能看到的内容(JS运行后才生成)

谷歌的搜索结果数就是典型的动态内容,所以静态抓取工具抓不到。

2. 用支持JS渲染的工具来抓取

推荐两个Python常用的工具,上手都不难:

方案一:Selenium(模拟真实浏览器)

Selenium可以完全模拟浏览器打开页面,等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浏览器(需要提前下载对应版本的chromedriver)
driver = webdriver.Chrome()
try:
    # 打开谷歌搜索页面,这里可以替换成你要处理的链接
    driver.get("https://www.google.com/search?q=你的搜索关键词")
    # 等待结果数元素加载完成(谷歌的结果数元素ID是#result-stats)
    result_element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "result-stats"))
    )
    # 提取动态生成的结果文本,比如"约 1,230,000,000 条结果"
    result_text = result_element.text
    print(result_text)
finally:
    # 用完记得关闭浏览器
    driver.quit()

这个方法的优势是兼容性极强,几乎能抓所有动态内容;缺点是速度稍慢,需要配置浏览器驱动。

方案二:Playwright(更轻量的自动化工具)

Playwright是微软出的,比Selenium更简洁,还自带浏览器驱动,不用额外下载:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    # 启动无头模式的Chrome(不显示浏览器窗口)
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    # 打开目标页面
    page.goto("https://www.google.com/search?q=你的搜索关键词")
    # 定位结果数元素并提取文本
    result_text = page.locator("#result-stats").text_content()
    print(result_text)
    browser.close()

这个工具上手更快,代码更简洁,推荐优先试试。

3. 几个需要注意的细节

  • 元素选择器要稳定:谷歌的元素ID或类名可能会更新,要是#result-stats失效了,就换用文本匹配的方式,比如page.get_by_text("条结果")(根据实际语言调整)
  • 避开反爬机制:谷歌对频繁抓取有限制,建议加个随机延迟,用真实的User-Agent,必要时用代理IP
  • 试试找API接口:有些网站的动态内容是通过AJAX请求获取的,你可以在开发者工具的「Network」标签里找对应的接口,直接请求接口拿数据——这种方式比模拟浏览器快得多,但谷歌的接口加密比较严,一般还是用浏览器模拟更靠谱。

总的来说,核心就是先判断内容是不是JS渲染的动态内容,然后选对应的工具抓取就行,Selenium和Playwright都能完美解决你的问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:05:51