简介
现代网站大量使用 React、Vue、Angular 等前端框架,数据渲染在浏览器中完成。直接请求 HTML 时往往拿不到数据。要解决这一问题,可以通过 Browserless(无头浏览器 API) 或 接口劫持分析 两种方式。
方案一:使用 Browserless(远程无头浏览器服务)
Browserless 提供了一个远程执行 Chrome 的 API,支持通过 URL 或脚本运行爬取逻辑,非常适合部署在服务器端。
示例:调用 Browserless 截取页面数据
import requests
import json
browserless_url = "https://chrome.browserless.io/content?token=<your_token>"
payload = {
"url": "https://news.example.com/",
"gotoOptions": {"waitUntil": "networkidle0"},
"viewport": {"width": 1280, "height": 800}
}
res = requests.post(browserless_url, json=payload)
html = res.text
print(html[:500])
优点
- 兼容所有前端框架渲染的网站
- 无需安装浏览器本地环境
- 可在云端水平扩展
方案二:接口劫持(分析前端请求)
多数 SPA 网站会在加载时调用真实的数据 API。
你可以通过浏览器「Network」→「XHR」筛选请求,看接口返回 JSON。
import requests
url = "https://news.example.com/api/v1/articles?page=1"
headers = {"User-Agent": "Mozilla/5.0", "Referer": "https://news.example.com"}
res = requests.get(url, headers=headers)
print(res.json())
识别技巧
- 使用关键字搜索 “api”、“json”、“feed”、“list”等。
- 检查请求参数规律,例如分页参数
page
,limit
。 - 如果返回内容被加密,可观察前端加密逻辑(通常在
crypto.js
或utils.js
)。
总结
对于单页应用,要么用浏览器执行(Browserless / Playwright),要么找到真实数据接口(API劫持)。
推荐优先接口劫持,速度快、资源占用低。