0
点赞
收藏
分享

微信扫一扫

python爬虫进阶第9篇:爬取 SPA 单页应用 —— 利用 Browserless 或前端接口劫持

简介

现代网站大量使用 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”等。
  • 检查请求参数规律,例如分页参数 pagelimit
  • 如果返回内容被加密,可观察前端加密逻辑(通常在 crypto.js 或 utils.js)。

总结

对于单页应用,要么用浏览器执行(Browserless / Playwright),要么找到真实数据接口(API劫持)。
推荐优先接口劫持,速度快、资源占用低。

举报

相关推荐

0 条评论