Ctrl+D 收藏本站 再次访问不迷路 ~
defuddle
一个智能的网页内容提取工具,能够将任意网页的杂乱 HTML 净化为结构清晰的 Markdown 或干净 HTML,专为阅读优化和知识管理而生。
功能特性
核心能力
Defuddle 的核心使命是 "去芜存菁" ——它深入解析网页 DOM 结构,精准识别并剥离广告栏、评论区、侧边导航、页脚链接等干扰元素,仅保留文章主体内容。与 Mozilla 经典的 Readability 相比,Defuddle 采取了更为宽容的提取策略,宁可保留疑似内容也不轻易丢弃,同时输出格式更加规范统一。
标准化输出
工具内置强大的 HTML 标准化引擎,确保不同来源的内容呈现一致:
- 标题层级:自动将孤立 H1 转为 H2,移除标题中的锚点链接
- 代码块:清理语法高亮和行号,保留语言标识为 data-lang 属性
- 数学公式:将 MathJax、KaTeX 渲染结果统一转换为标准 MathML - 脚注系统:规范化内联引用与文末注释的关联格式
- 提示框:整合 GitHub Alerts、Obsidian Callouts、Bootstrap 等多种来源为统一的 Obsidian 风格标注
元数据提取
Defuddle 不仅抓取正文,更深度挖掘页面信息:作者署名、发布日期、网站域名、文章摘要、封面图片、语言编码,甚至完整的 Schema.org 结构化数据,为后续归档和检索提供丰富上下文。
多场景适配
项目提供三种专用构建版本:
- 核心版(defuddle):浏览器环境零依赖,体积最优
- 完整版(defuddle/full):额外集成数学公式转换与 Markdown 生成
- Node 版(defuddle/node):服务端渲染,兼容 JSDOM、linkedom 等任意 DOM 实现
使用方式
浏览器直接调用
import Defuddle from 'defuddle';
const defuddle = new Defuddle(document);
const result = defuddle.parse();
console.log(result.content); // 净化后的 HTML
console.log(result.title); // 文章标题
console.log(result.author); // 作者信息
Node.js 服务端处理
import { parseHTML } from 'linkedom';
import { Defuddle } from 'defuddle/node';
const { document } = parseHTML(html);
const result = await Defuddle(document, 'https://example.com/article', {
markdown: true // 直接输出 Markdown
});# 解析本地文件
npx defuddle parse article.html --markdown
# 抓取远程页面
npx defuddle parse https://example.com/post --json -o result.json
# 仅提取标题
npx defuddle parse page.html --property title调试与精细控制
开发阶段可启用调试模式,查看内容选择器的决策路径和元素移除记录;针对特殊页面布局,支持通过 contentSelector 强制指定主内容区域,或逐项关闭清理管道中的特定步骤。
使用工具
©版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容