web_fetch 的“裸奔”困境: 它是 Claude 的原生工具,主打一个“零配置”。但在 OpenClaw 里实测发现,它返回的是未经处理的原始 HTML。对于简单的 GitHub README 还行,一旦遇到稍微复杂点的页面,有效正文被淹没在噪音里,Token 浪费极其严重。更致命的是,面对 Substack 或微信公众号这种带反爬机制的站点,它基本是直接歇菜,返回空值或报错。 Jina 的“限额”焦虑: Jina Reader (r.jina.ai) 确实是神器,一行 URL 前缀就能吐出极度干净的 Markdown,格式完美,几乎不需要二次清洗。但是,它的免费额度卡在 200 次/天。对于个人偶尔查查资料够用,但如果你是个高产的创作者,或者需要批量处理数据,这个限额就像悬在头顶的达摩克利斯之剑,一不小心就耗尽,工作流直接中断。 Scrapling的门槛与维护:像 Scrapling 这种偏工程化的抓取工具,能力更全面,适配面也更广。不过它对接入方式、运行环境、维护习惯会更挑一点:你要么写脚本,要么封装技能,要么做容错策略。
出身:Jina AI 官方维护,GitHub 9.7k+ Star,Apache-2.0 开源。 必杀技:无需注册,无需 API Key。只要在 URL 前加 https://r.jina.ai/,它就能把任意网页(包括 SPA 动态渲染页、PDF)转为 LLM 友好的 Markdown。 额外能力:支持 s.jina.ai 搜索并返回 Top 5 全文;自动给图片加 Alt 描述。 定位:格式最干净的“预处理工厂”。

出身:GitHub 上近期爆火的自适应爬虫框架,Star 数已突破 2.2 万(截至 2026 年 3 月数据),BSD-3-Clause 开源。原作者已明确宣布正在将其打造为 OpenClaw 的原生 Skill。 必杀技:拥有三种 Fetcher 模式。轻量 HTTP 模式速度快;StealthyFetcher 能绕过 Cloudflare 等常见反爬;DynamicFetcher 则是完整的浏览器自动化,专治各种 JS 渲染。 独门绝技:网站改版后,它能自动重新定位目标元素,不用你天天修 XPath。它还内置了 MCP Server,能直接跟 Claude/Cursor 对话。 定位:能扛能打、无限免费的“特种部队”。
出身:Claude 原生内置工具。 必杀技:零配置,OpenClaw 工作流里拖个节点就能用。 定位:适合简单静态页面的“快速侦察兵”。
Jina:表现最佳,秒开,格式完美。是第一优先选择。 web_fetch:直接报错 Connection timeout 或返回 403,完全不可用。 Scrapling:使用 StealthyFetcher 模式,耗时约 3 秒,成功绕过验证,内容完整。虽然慢了点,但能抓到就是胜利。
Scrapling (DynamicFetcher):提供完整的浏览器控制,等待 JS 执行完毕后再提取,效果最强。 Jina:依赖后端的 Puppeteer 集群,表现稳定,但偶尔会遇到超时。 web_fetch:局限性明显,经常只能抓到 Loading 状态的骨架屏。
# OpenClaw 中的 Python 脚本节点示例from scrapling import StealthyFetcherimport html2textdeffetch_wechat(url):# 启动 stealthy 模式,自动处理 Cookie 和指纹 fetcher = StealthyFetcher(auto_match=True) page = fetcher.fetch(url)# 转换为 Markdown h = html2text.HTML2Text() h.ignore_links = False markdown_content = h.handle(page.text)return markdown_content# 实测 mp.weixin.qq.com/s/xxx 链接,返回正常---name: scrapling-web-scraperdescription: 自适应网页抓取框架,支持反爬虫绕过、动态页面处理和智能元素追踪version: 1.0.0compatibility: openclawrequires: bins: [python, pip] env: [SCRAPLING_API_KEY]---# 使用说明本技能允许你使用 Scrapling 的强大功能抓取网页。## 可用指令- **隐身模式**: 当遇到 Cloudflare 或其他反爬机制时,自动启用 StealthyFetcher。- **动态渲染**: 对于 SPA 页面,自动切换 DynamicFetcher 等待 JS 执行。- **智能追踪**: 即使网站改版,也能自动重新定位目标元素。## 示例"用 Scrapling 抓取 https://example.com 的产品列表,提取名称、价格和评分"scrapling_skill.py:封装好的 Python 逻辑,处理所有复杂的底层调用。 config.json:预设的配置参数,如默认超时时间、重试次数等。 handlers/:针对不同场景(如电商、新闻、社交媒体)的专用处理模块。
# 1. 克隆 Scrapling 仓库git clone https://github.com/D4Vinci/Scrapling.git# 2. 将 agent-skill 目录复制到 OpenClaw 技能目录# 全局安装(所有项目可用)cp -r Scrapling/agent-skill ~/.openclaw/skills/scrapling-skill# 或者项目级安装(推荐,便于版本管理)cp -r Scrapling/agent-skill ./skills/scrapling-skill# 搜索技能openclaw search "scrapling"# 安装技能openclaw install scrapling-web-scraper# 如果需要,配置相关密钥openclaw configure scrapling-web-scraper# 安装工具npm install -g add-skill# 直接添加npx add-skill https://github.com/D4Vinci/Scrapling/tree/main/agent-skill{"skills": {"scrapling-web-scraper": {"enabled": true,"path": "~/.openclaw/skills/scrapling-skill","config": {"stealth_mode": true,"solve_cloudflare": true,"proxy_rotation": "auto" } } }}export SCRAPLING_API_KEY="your_api_key_here"export SCRAPLING_PROXY_POOL="http://proxy1:port,http://proxy2:port"# 重启 OpenClawopenclaw restart基础抓取:
“用 Scrapling 技能抓取 https://example.com 的产品列表,提取名称、价格和评分。”
高阶反爬:
“使用 Scrapling 的隐身模式绕过 Cloudflare,抓取这个需要登录的网站数据。”
智能监控:
“用自适应解析功能监控这个网站,如果页面结构变化自动重新定位元素。”
定时任务:
“设置定时任务,每天上午 9 点抓取竞争对手价格并生成报告。”
组合拳:
“先用 Scrapling 抓取数据,然后用数据分析技能生成可视化图表,最后用邮件技能发送报告。”
Scrapling 功能 | OpenClaw 调用方式 | 示例指令 |
|---|---|---|
StealthyFetcher | 隐身模式抓取 | “用隐身模式抓取受保护的网站” |
DynamicFetcher | 动态页面处理 | “抓取需要 JavaScript 渲染的页面” |
自适应解析 | 智能元素追踪 | “监控这个页面,元素移动时自动调整” |
Spider 框架 | 批量爬虫任务 | “抓取这个网站的所有产品页面” |
MCP 服务器 | AI 辅助抓取 | “帮我分析这个页面的最佳抓取策略” |
技能未加载:运行 openclaw skills list 检查,若未显示则运行 openclaw skills reload。 403 错误:在指令中显式要求 --stealth-mode true 或配置 --proxy-rotation auto。 动态页抓取失败:指定 --fetcher-type dynamic 并启用 --network-idle true。
Token 优化:指令中明确范围,如“只抓取 .price-table 类内的数据”,减少无效信息传输。 容错处理:设定备用策略,“如果抓取失败,尝试备用 URL 或使用移动端页面”。 合规第一:始终提醒 AI“检查 robots.txt,遵守网站抓取规则”。
在 OpenClaw 工作流中添加一个 HTTP Request 节点。 Method 选择 GET。 URL 填写模板:https://r.jina.ai/{{input_url}}。 无需任何 Header,直接发送。 输出即为清洗后的 Markdown。
按照第六节的方法安装 scrapling-web-scraper 技能。 在 OpenClaw 的聊天窗口或工作流的“AI 指令”节点中,直接输入:
“请使用 scrapling-web-scraper 技能,访问 {{input_url}},提取正文内容并转换为 Markdown。如果是微信公众号链接,请自动开启隐身模式。”
OpenClaw 会自动加载技能包中的 SKILL.md 上下文,调用底层的 Python 脚本执行任务,并返回结果。
确保环境已安装依赖:pip install scrapling html2text。 添加一个 Python Script 节点,代码如下:
import scraplingimport html2text# 获取输入变量url = params.get('url')# 智能判断:如果是微信,强制使用 StealthyFetcherif'weixin.qq.com'in url: fetcher = scrapling.StealthyFetcher(auto_match=True)else:# 普通站点用轻量模式,速度更快 fetcher = scrapling.Fetcher()try: page = fetcher.fetch(url)# 初始化 html2text h = html2text.HTML2Text() h.ignore_links = False h.body_width = 0# 不换行,保持段落完整 markdown_text = h.handle(page.text)# 截断保护if len(markdown_text) > 30000: markdown_text = markdown_text[:30000] + "\n\n... (内容过长已截断)" result = markdown_textexcept Exception as e: result = f"Error: {str(e)}"# 输出结果{'content': result}Jina 是锋利的匕首,快准狠,但有耐久度限制; Scrapling 是厚重的盾牌,能抗能打。特别是它现在拥有了原生的 Agent-Skill 形态,让中文语境下的微信公众号抓取变得像说话一样简单,这让它成为了无可替代的必选项; web_fetch 则是随手的螺丝刀,简单场景顺手用一下。
夜雨聆风