前言¶
做数据采集或写技术介绍时,经常需要把公开网页里的标题、正文或某一块 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 对接。
-
单 URL 抓取(
scripts/fetch.py)
请求页面,自动处理编码,解析 HTML,返回标题、正文、meta(如 description、keywords)及耗时等统计。 -
批量抓取(
scripts/batch_fetch.py)
对 URL 列表并发请求,支持去重,并输出成功/失败汇总报告。默认可调并发数与请求间隔。 -
指定元素提取(
scripts/extract.py)
按简化选择器(tag、class、id、attr)匹配节点,返回匹配元素的内容列表。 -
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