核心用法
clean-web-fetch 是一款专注于现代网页正文提取的技能,旨在解决传统 fetch 在面对动态渲染、反爬机制或复杂 DOM 结构时的不稳定问题。用户通过调用 python3 scripts/scrapling_fetch.py <url> <max_chars> 即可快速获取清洗后的 Markdown 正文。技能内置智能选择器优先级策略,依次尝试 article、main、.post-content、[class*="body"] 等常见正文容器,未命中时自动回退至 body 标签,最终按指定字符数截断输出。
该技能对微信公众号文章有专门优化,能够识别并清洗尾部营销信息、推荐阅读等噪音内容,特别适合新闻聚合、博客归档、公告监控等场景。支持 --json 结构化输出和 stderr 调试信息,便于集成到自动化工作流中。
显著优点
正文提取精准度高:基于 Scrapling 的浏览器行为模拟能力,能够绕过多数基础反爬机制,获取 JavaScript 渲染后的最终 DOM 状态。相比传统 requests + BeautifulSoup 方案,成功率提升显著。
Token 效率优化:通过智能选择器过滤导航栏、侧边栏、广告位、页脚等多余元素,仅保留核心正文内容。测试表明,对典型新闻页面可减少 60%-80% 的无效 Token,大幅降低 LLM 上下文成本。
微信公众号专项适配:针对微信文章的独特 DOM 结构(如 rich_media_content 类名)进行识别,自动移除底部二维码、关注引导、历史文章推荐等干扰信息。
输出格式标准化:统一转换为 Markdown 格式,保留标题层级、列表、链接等基本排版结构,便于后续摘要、翻译、知识库入库等处理。
潜在缺点与局限性
依赖外部脚本可用性:技能文档引用了 /Users/zzd/.openclaw/workspace/skills/scrapling-web-fetch/ 路径下的脚本文件,但这些 helper scripts 可能未随技能包分发。用户需自行验证路径存在性或手动部署脚本,存在"文档型技能"常见的配置 Gap 风险。
无交互能力边界:明确不支持需要登录、验证码、点击翻页、Cookie 维持等场景的站点。对于 SPA(单页应用)或重度依赖前端路由的页面,提取效果可能不稳定。
环境依赖较重:需要 Python 3 环境及 scrapling、html2text 两个 PyPI 包,在受限容器或离线环境中部署存在门槛。
选择器策略固定:虽然覆盖常见正文模式,但面对非标准博客系统或企业定制 CMS,可能需要手动覆盖选择器(技能支持 --selector 参数,但文档说明较简略)。
适合的目标群体
- 内容运营与媒体监测:需要批量抓取新闻源、竞品动态、行业公告的分析师和编辑
- 知识管理用户:希望将分散的博客文章、技术文档归档为统一 Markdown 知识库的开发者
- AI 工作流搭建者:构建自动化摘要、翻译、问答系统的工程师,需要稳定可靠的网页到文本转换环节
- 学术研究人员:抓取公开论文页面、政策公告等,用于文献综述或数据挖掘
使用风险说明
执行依赖风险:由于技能本身为纯 Markdown 文档(T-MD 分类),无可执行代码,实际功能依赖用户环境中是否存在引用的外部脚本。若路径错误或脚本缺失,将导致执行失败。建议首次使用前手动验证 scripts/scrapling_fetch.py 的可访问性。
网络请求风险:技能底层通过 Scrapling 发起真实 HTTP 请求,需遵守目标站点的 robots.txt 和使用条款。高频抓取可能导致 IP 被封禁,建议配合请求间隔、代理轮换等策略使用。
数据安全边界:虽然技能本身不收集数据,但抓取行为可能涉及 GDPR/CCPA 等合规要求,尤其是抓取包含用户生成内容的页面时。应避免抓取需认证、含敏感 Token 或内网地址的 URL。
性能与资源消耗:Scrapling 会启动浏览器引擎(如 Chromium),内存占用显著高于纯 HTTP 客户端,批量处理时需注意资源规划。