网页抓取工具箱:标准库实现的 Agent 网页采集 Skill

前言

做数据采集或写技术介绍时,经常需要把公开网页里的标题、正文或某一块 DOM 拿出来。常见做法是临时写一段 requests + BeautifulSoup,或者让 Agent 去调浏览器类 MCP。前者要装依赖、维护脚本;后者对「只要静态 HTML」的页面往往过重。

下面介绍 SkillHub 上的 网页抓取工具箱(@user_f28fdad8/oc-web-fetch):用四个可执行 Python 脚本覆盖单页抓取、批量抓取、按条件抽元素、HTML 转 Markdown,且只依赖 Python 标准库,装好 Skill 后 Agent 可按 JSON 入参直接调用。

这是什么

网页抓取工具箱是社区发布者 user_f28fdad8 在 SkillHub 上架的 Agent Skill,坐标 @user_f28fdad8/oc-web-fetch,当前版本 1.0.0,分类为 data-analysis,标签标明 requires_api_key=false(无需 API Key)。

定位是轻量级网页内容抓取与转换:输入 URL(或 HTML 字符串),输出结构化 JSON 或 Markdown 文本,方便 Agent 做摘要、入库或二次处理。

官方页面:

  • SkillHub:https://www.skillhub.cn/skills/user_f28fdad8/oc-web-fetch
  • API 入口:https://api.skillhub.cn/user_f28fdad8/oc-web-fetch

核心功能

Skill 内 SKILL.md 与 scripts/ 目录对应四类能力,输入输出均为 JSON,便于 Agent 对接。

  1. 单 URL 抓取(scripts/fetch.py)
    请求页面,自动处理编码,解析 HTML,返回标题、正文、meta(如 description、keywords)及耗时等统计。

  2. 批量抓取(scripts/batch_fetch.py)
    对 URL 列表并发请求,支持去重,并输出成功/失败汇总报告。默认可调并发数与请求间隔。

  3. 指定元素提取(scripts/extract.py)
    按简化选择器(tag、class、id、attr)匹配节点,返回匹配元素的内容列表。

  4. HTML 转 Markdown(scripts/to_markdown.py)
    从 URL 或 HTML 字符串转换,过滤导航、脚本等噪声标签,保留标题、段落、列表、链接、图片等结构。

实现上强调:仅使用 urllib、html.parser、json、re 等标准库;单页抓取带编码检测(文档写明支持 UTF-8、GBK、GB2312 等);失败时返回明确错误信息而非直接崩溃。

安装与启用

通过 SkillHub CLI 安装

先确认本机是否已有 skillhub:

command -v skillhub && skillhub --version

未安装时,可按 SkillHub 官方说明执行完整安装或仅 CLI(文档地址:https://skillhub.cn/install/skillhub.md):

curl -fsSL https://skillhub-1388575217.cos.ap-guangzhou.myqcloud.com/install/install.sh | bash

安装 Skill 时,必须用 --dir 指向当前 Agent 的 skills 目录,否则默认落在 ./skills/ 可能不会被识别。以本 Skill 为例:

skillhub install @user_f28fdad8/oc-web-fetch --dir ~/.cursor/skills/

常见客户端 skills 路径(摘自 SkillHub 安装文档):

  • Cursor:~/.cursor/skills/
  • Claude Code:~/.claude/skills/
  • Codex:~/.codex/skills/ 或项目下的 .agents/skills/

SkillHub 页面也提供「让 AI 根据 https://skillhub.cn/install/skillhub.md 安装 @user_f28fdad8/oc-web-fetch」的提示词,效果与上述 CLI 安装一致,只是由 Agent 代为执行步骤。

安装完成后,在对话中触发与网页抓取相关的意图(如「抓取网页」「HTML 转 Markdown」「批量抓取」等,见 Skill 元数据中的 trigger 字段)时,Agent 应加载该 Skill 并按 SKILL.md 调用对应脚本。

典型用法

以下命令需在 Skill 包根目录(含 scripts/ 的目录)下执行,路径以你本机安装位置为准。

1、抓取单个网页

python scripts/fetch.py --input '{"url": "https://example.com"}'

可选字段 timeout 默认 10(秒)。成功时返回 status、title、content、meta、stats 等字段的 JSON。

2、批量抓取

python scripts/batch_fetch.py --input '{"urls": ["https://example.com/page1", "https://example.com/page2"]}'

可选:concurrency 默认 3,delay 默认 1(秒)。输出每个 URL 的结果及汇总报告。

3、按选择器提取区域

python scripts/extract.py --input '{"url": "https://example.com", "selector": {"tag": "div", "class": "article-content"}}'

selector 支持 tag、class、id;attr 可按 name:value 或仅属性名匹配。

4、网页转 Markdown

python scripts/to_markdown.py --input '{"url": "https://example.com"}'

也可传入 html 字段代替 URL。输出 Markdown 文本及转换统计。

适用场景与注意

适合谁

  • 需要快速从静态 HTML 页面取正文、meta 或局部 DOM,且希望零 pip 依赖、脚本可被 Agent 稳定调用。
  • 批量拉取若干公开 URL,并需要简单的并发与去重、汇总。

限制与注意

  • 基于 urllib 与 html.parser,不执行 JavaScript,对强依赖前端渲染的站点,正文可能不完整;此类场景仍需浏览器或专用渲染方案。
  • extract.py 的选择器是标签/class/id/属性的组合匹配,不是完整 CSS 选择器语法;复杂页面需多试几次条件或改用单页抓取后再由 Agent 处理文本。
  • 批量抓取请合理设置 concurrency 与 delay,遵守目标站点的访问频率与 robots 约定;本 Skill 不提供代理、Cookie 登录等高级能力。
  • 社区 Skill,行为以包内 SKILL.md 与脚本为准;SkillHub 页面统计(截至资料抓取)显示评分 100000、下载 3025 次,供选型参考。

结尾

网页抓取工具箱把「单页、批量、抽元素、转 Markdown」拆成四个标准库脚本,并用 JSON 统一入参出参,适合作为 Agent 侧的轻量采集层。若你的环境已配置 SkillHub,可按上文命令装入 Cursor 等客户端的 skills 目录后直接使用。

更多信息与安装入口:https://www.skillhub.cn/skills/user_f28fdad8/oc-web-fetch

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜