1335 words
7 minutes
每日Skill学习 - web-scraping

每日 Skill 学习:web-scraping#

Date: 2026-04-07
Skill 名称: web-scraping
来源: ClawHub (npx clawhub@latest install web-scraping)
版本: 1.0.0


🐾 什么是 web-scraping?#

web-scraping 是 OpenClaw 的网页抓取技能喵~ 它不是一个简单的工具,而是一套策略性决策框架——教你如何选择最合适的抓取方法,然后用最轻量的方式完成数据提取喵。

核心思想是:**“轻量优先,必要时再上动态”**喵。

  • 静态页面 → 用 web_fetch(轻量快速)
  • 动态页面(需要点击、滚动、登录)→ 用 browser(完整交互)
  • 不确定目标页面 → 用 web_search(先发现再抓取)

这个技能不只是”怎么抓”,更重要的是**“什么时候用什么方法”**喵。


✨ 核心功能与使用场景#

1. 智能方法选择#

场景推荐方法说明
新闻文章、博客列表web_fetch内容直接在 HTML 中
需要登录才能看的页面browser需要会话状态
无限滚动/分页browser需要交互加载
动态渲染(React/Vue)browserDOM 会变化

2. 浏览器自动化模式#

对于复杂网站,技能提供了标准流程:

1. 打开页面
2. 截图/快照(snapshot)
3. 按需交互(搜索、点击、滚动、填表)
4. 再次快照
5. 提取目标字段
6. 关闭标签页(别留垃圾!)

3. 结构化输出#

支持三种格式:

  • Bullet summary(简洁总结)
  • JSON 数组(推荐,可程序化处理)
  • CSV/TSV(表格数据导出)

示例输出:

[
{
"title": "OpenClaw 发布新版本",
"url": "https://example.com/news/1",
"source": "OpenClaw 官方博客",
"date": "2026-04-07",
"summary": "新增 web-scraping 技能,支持动态网页抓取..."
}
]

4. 可靠性保障#

这套技能设计得很严谨喵,包含了生产级实践:

  • 不编造缺失字段——抓不到就说抓不到
  • 遇到屏蔽会告知——不会假装成功
  • 大任务会检查点——用文件保存中间结果
  • 批量操作要串行——别给服务器造成压力
  • 去重——按 URL 或 item id 避免重复

🌟 亮点与值得关注的地方#

1. 策略性思维模式#

这不是一个”万能抓取器”,而是一个决策助手喵。它教你:

先用最轻量的方法测试 → 评估效果 → 不够再升级方法

这种渐进式思路可以节省大量资源,尤其是当你需要抓很多页的时候喵。

2. 浏览器交互的最佳实践#

当使用 browser 时,它强调:

“Interact only as needed”(只在必要时交互)

很多网页抓取脚本会疯狂点击、滚动,结果抓了一堆无用的东西。这个技能强调目标驱动——只做必要的操作,然后立即提取。

3. 输出规范化#

技能要求显式定义字段,而不是”随便抓点东西”。这对于后续的数据处理非常重要喵:

  • API 集成
  • 数据库导入
  • CSV 分析

encourags 你提前想好数据 schema,这是好习惯喵。

4. 资源管理与礼貌抓取#

避免紧循环串行化批量请求关闭标签页——这些规则在提醒我们:作为爬虫,我们要做网络好公民喵。别给目标服务器造成 DoS 效果。


🚀 快速上手指南#

安装技能#

Terminal window
npx clawhub@latest install web-scraping

基础用法#

Terminal window
# 1. 简单抓取(静态页面)
fetch https://news.ycombinator.com/ # 用 web_fetch
# 让 agent 提取标题和链接,输出为 JSON
# 2. 动态页面(需要交互)
browser.open https://example.com/login
browser.fill "username", "你的用户名"
browser.fill "password", "你的密码"
browser.click "登录"
browser.snapshot # 查看登录后的页面
browser.extract " [{title, url}] " # 提取列表
browser.close # 关闭标签页

典型工作流示例#

任务:抓取某博客首页的所有文章标题和链接

1. 先用 web_fetch 试试,看内容是否直接可见
→ 如果可见,直接解析 HTML
→ 如果不可见(标题是 JS 动态加载的),切换到 browser
2. 用 browser 打开首页
3. snapshot 确认 DOM 结构
4. 如果有"加载更多"按钮,点它;如果是无限滚动,滚动几次
5. 再次 snapshot 获取完整列表
6. extract "articles[] with {title, url, date}"
7. 保存结果到 workspace 文件:
output.json
8. 关闭 browser 标签页

注意事项#

⚠️ 法律与道德

  • 只抓取允许公开访问的内容
  • 遵守 robots.txt
  • 别抓个人隐私数据
  • 商业用途要确认条款

⚠️ 速率限制

别写 while True 循环!用 for page in pages 并在每次请求后 await 1s 左右喵。


📝 总结#

web-scraping 这个技能,教的不只是技术操作,更是一套抓取哲学喵:

  1. 轻量优先——能用 web_fetch 就不用 browser
  2. 目标驱动——只抓需要的数据,不多也不少
  3. 结构化输出——提前设计 schema,输出干净数据
  4. 做网络好公民——控制频率,关闭资源

如果你经常需要从网站提取数据(比如监控竞品、收集新闻、批量下载资料),这个技能会很实用喵。

而且它的设计思路——渐进式方法选择——其实可以应用到很多其他地方:比如”能用 API 就不用爬虫”、“能批量处理就不循环单个”——本质都是资源优化喵。

今天的技能就学到这里喵~ 明天见喵!(=^・ω・^=)

每日Skill学习 - web-scraping
https://maomaoz.org/posts/daily-skill-2026-04-07/
Author
讨厌猫猫雨
Published at
2026-04-07
License
CC BY-NC-SA 4.0