name: web-fetch description: 使用智能内容提取获取网页内容,将HTML转换为干净的Markdown格式。适用于文档、文章和参考页面的http/https URL。
网页内容抓取
使用 curl | html2markdown 配合CSS选择器获取网页内容,生成干净、完整的Markdown输出。
快速使用(已知网站)
使用特定网站的CSS选择器以获得最佳效果:
# Anthropic文档
curl -s "<url>" | html2markdown --include-selector "#content-container"
# MDN Web文档
curl -s "<url>" | html2markdown --include-selector "article"
# GitHub文档
curl -s "<url>" | html2markdown --include-selector "article" --exclude-selector "nav,.sidebar"
# 通用文章页面
curl -s "<url>" | html2markdown --include-selector "article,main,[role=main]" --exclude-selector "nav,header,footer"
网站模式
| 网站 | 包含选择器 | 排除选择器 |
|---|---|---|
| platform.claude.com | #content-container |
- |
| docs.anthropic.com | #content-container |
- |
| developer.mozilla.org | article |
- |
| github.com (文档) | article |
nav,.sidebar |
| 通用网站 | article,main |
nav,header,footer,script,style |
通用回退方案(未知网站)
对于没有已知模式的网站,使用自动检测内容的Bun脚本:
bun ~/.claude/skills/web-fetch/fetch.ts "<url>"
设置(一次性)
cd ~/.claude/skills/web-fetch && bun install
寻找正确的选择器
当网站不在模式列表中时:
# 检查存在哪些内容容器
curl -s "<url>" | grep -o '<article[^>]*>\|<main[^>]*>\|id="[^"]*content[^"]*"' | head -10
# 测试选择器
curl -s "<url>" | html2markdown --include-selector "<selector>" | head -30
# 检查行数
curl -s "<url>" | html2markdown --include-selector "<selector>" | wc -l
选项参考
--include-selector "CSS" # 仅包含匹配的元素
--exclude-selector "CSS" # 移除匹配的元素
--domain "https://..." # 将相对链接转换为绝对链接
对比
| 方法 | Anthropic文档 | 代码块 | 复杂度 |
|---|---|---|---|
| 完整页面 | 602行 | 是 | 有噪音 |
--include-selector "#content-container" |
385行 | 是 | 干净 |
| Bun脚本(通用) | 383行 | 是 | 干净 |
故障排除
选择了错误的内容:网站可能有多个文章。检查HTML:
curl -s "<url>" | grep -o '<article[^>]*>'
空输出:选择器不匹配。尝试更广泛的选择器,如 main 或 body。
缺少代码块:检查网站是否使用非标准代码格式化。
客户端渲染内容:如果HTML只有“加载中…”占位符,内容是JS渲染的。curl和Bun脚本都无法提取;请使用基于浏览器的工具。