SuperAPI AI 工具集

web-fetch

通用与其它

查看项目

更新于 10-15 20:29

技能介绍

web-fetch 是一个网页抓取技能,通过 Chrome DevTools Protocol(CDP)控制无头 Chrome 实例,抓取网页并进行完整 JavaScript 渲染,可处理 JS 重定向、单页应用(SPA)和动态内容,并从任意 URL 提取干净文本,适用于需要读取依赖 JavaScript 渲染页面文本的场景。

使用前提:系统中需安装 Google Chrome 或 Chromium。安装方式:macOS 用 brew install --cask google-chrome;Ubuntu/Debian 用 sudo apt install google-chrome-stable;Windows 用 winget install Google.Chrome。Python 3 仅需标准库,pip 依赖为零;可选安装 trafilatura 以获得更好的内容提取。无需 API 密钥或令牌。

用法示例:抓取单个 URL:python <skill-path>/scripts/web_fetch.py --url "https://example.com/article";多个 URL 可复用同一 Chrome 会话:使用多个 --url 参数;也支持管道输入,每行一个 URL;JSON 输出到文件适合多 URL 场景,命令为 python <skill-path>/scripts/web_fetch.py --url "https://example.com" --format json -o "$TMPDIR/results.json"。

选项包括:--url(可重复)、--format(text 或 json,默认 text)、-o/--output(输出到文件)、--wait-ms(JS 渲染等待毫秒,默认 1500)、--timeout(单 URL 超时秒数,默认 15)、--max-chars(每页最大字符数,默认 15000)、--batch-size(每批 URL 数,默认 3)、--port(CDP 调试端口,默认自动检测)。文本模式以 --- 分隔各 URL 的纯文本;JSON 模式返回 url、final_url、success、content 等字段,失败时返回 success 与 error。

工作原理:查找 Chrome、以隔离配置启动(--headless=new --remote-debugging-port=PORT --user-data-dir=TMPDIR,避免与正在运行的 Chrome 冲突)、通过纯 Python CDP 客户端以 WebSocket 连接、导航并等待 JS 渲染、获取最终 URL 与 DOM、提取文本(优先 trafilatura,否则去除 HTML 标签),最后关闭 Chrome 并删除临时配置。

优势:无配置文件冲突、可处理 JS 重定向、零依赖、单 Chrome 会话、跨平台。macOS 首次运行可能弹出是否允许 Google Chrome 接受传入网络连接的提示,点击允许即可,因为 CDP 仅使用本地端口。

限制:必须已安装 Chrome/Chromium;未提供缓存、代理、认证或反爬相关能力说明;其他未在资料中提及的功能暂未提供。