网页内容抓取器
从 AI 无法直接访问的网页中提取干净文本。解决三大痛点:JS 渲染页面、登录墙、速率限制。
触发方式
关键词触发:
- "抓取" / "爬取" / "scrape" / "提取内容" / "获取网页文字" / "把这篇网页内容提出来" + URL
- "这个页面我打不开/打不开完整内容,帮我抓一下"
不触发的情况:
- 纯文本/JSON API(curl 即可,不需要本 Skill)
- 需要登录但未提供 cookie 的页面(会提示)
- 本地文件路径
能力边界
✅ 可以抓取
- JS 渲染的 SPA(React/Vue/Angular)——自动检测并用无头浏览器渲染
- 登录墙后的页面——传入 cookie 文件即可
- 被限速的 API——内置重试+退避
- 分页内容——
--paginate自动跟随"下一页"链接 - 微信公众平台文章——自动切换 QQ 浏览器 UA 绕过验证
❌ 不能抓取
- 需要验证码/人机验证的页面
- 需要多步交互(点击、滚动加载)的页面
- 法律法规禁止抓取的内容
- 需要登录但未提供有效 cookie 的页面
错误处理
Cookie 缺失
⚠️ 该页面需要登录才能访问。请提供 cookie 文件路径:
bash scripts/scrape.sh <URL> --cookie-file ~/cookies.txt
获取 cookie:浏览器 F12 → Application → Cookies → 导出。
页面加载超时
⚠️ 页面加载超时(30秒)。可能原因:网站屏蔽、网络问题。
建议:检查网络连接,或尝试使用代理。
JS 渲染失败
⚠️ 无头浏览器不可用(需安装 puppeteer)。已回退到纯文本抓取,JS 渲染内容可能缺失。
安装:npm install puppeteer
使用脚本
bash scripts/scrape.sh <URL> [选项]
选项:
--selector "css选择器" 只提取匹配元素的内容(如 "article.main")
--paginate 自动抓取所有分页
--cookie-file 路径 传入浏览器 cookie 文件以访问登录墙后的内容
示例:
bash scripts/scrape.sh "https://example.com/article"
bash scripts/scrape.sh "https://spa-site.com" --selector ".content"
bash scripts/scrape.sh "https://members-only.com" --cookie-file ~/cookies.txt
bash scripts/scrape.sh "https://blog.com" --paginate
FAQ
Q: 无头浏览器需要什么依赖?
需要 Node.js 和 puppeteer:npm install puppeteer。不需要 Chromium(puppeteer 自带)。
Q: 被网站屏蔽了怎么办?
使用代理:export HTTPS_PROXY=http://127.0.0.1:7890 后再运行。
Q: 抓取的内容乱码怎么办?
脚本自动检测编码。如仍有问题,文件已保存为 UTF-8,可用 iconv 手动转换。
反模式
- ❌ 不要用本 Skill 大规模爬取网站——尊重 robots.txt
- ❌ 不要抓取需要验证码的页面——无法通过且可能触发封禁
- ❌ 不要在短时间内对同一域名发起大量请求——会被限速
文件结构
web-scraper/
├── SKILL.md ← 核心规则 + 触发 + FAQ
└── scripts/
└── scrape.sh ← 网页抓取脚本
微信扫一扫