核心用法
web-fetch是一个基于Node.js的本地网页抓取工具,用于通过已知URL直接获取目标页面内容。与搜索类工具不同,它专注于定向检索而非内容发现。典型场景包括:抓取用户提供的文档链接、将文章转换为可读的Markdown格式后摘要、检查原始HTML结构,或直接下载远程图片到本地路径。
运行命令为node ./fetch.js --url "目标地址",支持四种输出格式:
- markdown(默认):提取可读性强的格式化文本,适合文档和文章摘要
- text:最纯净的纯文本提取,去除所有标记
- html:保留原始标记语言,用于调试页面结构、元数据或嵌入内容
- 图片下载:通过
--output <路径>将远程图片保存到指定位置
可选参数包括--timeout(默认30秒,最大120秒)和--output(用于图片保存)。
显著优点
1. 多格式输出灵活:同一URL可按需获取结构化Markdown、纯净文本或原始HTML,适应不同下游处理场景
2. 智能容错机制:自动将HTTP尝试升级为HTTPS,内置Cloudflare 403挑战的浏览器级重试逻辑
3. 资源管控严格:5MB响应上限和120秒超时限制防止资源滥用,适合自动化工作流嵌入
4. 本地执行可信:基于Node.js本地脚本运行,无需依赖外部API服务,降低第三方数据泄露风险
潜在缺点与局限性
- 无发现能力:必须提供确切URL,无法处理"查找某类内容"的需求,需配合搜索工具使用
- 动态内容受限:对于重度JavaScript渲染的单页应用(SPA)或需要登录态的内容,抓取效果有限
- 反爬防御敏感:虽有一定重试逻辑,但面对严格的WAF或速率限制时仍可能失败
- SVG处理特殊:SVG被当作文本而非二进制图片处理,特定场景需额外转换
适合人群
- 开发者与运维人员:需要批量抓取文档、检查页面元数据或调试HTML结构
- 内容研究者:将网络文章转为可分析的Markdown文本进行摘要或知识整理
- 自动化流程构建者:在CI/CD或数据处理管道中嵌入网页内容获取环节
常规风险
1. 目标服务器负载:高频调用可能对目标站点造成压力,建议控制请求频率
2. 内容版权合规:抓取受版权保护的文章或图片需确保符合使用条款及当地法规
3. 敏感信息暴露:HTML源可能包含内嵌的API密钥、测试数据等,处理时需脱敏审查
4. 链接失效风险:远程图片下载后原链接变更不影响本地文件,但需管理本地存储路径