别再把整页 HTML 丢给大模型了:我做了一个 Codex skill正文提取工具
最近在做网页正文清洗时,我遇到一个很常见的问题:
很多网页 HTML 里面,真正有价值的正文只占很小一部分,剩下的大量内容其实是导航栏、广告、评论区、相关推荐、分享按钮、登录弹窗和 footer。
如果直接把整页 HTML 丢给 AI 摘要、RAG 知识库或者 AI Agent,会出现两个问题:
第一,浪费 token。
第二,噪声内容会污染摘要和检索结果。
所以我做了一个小工具:Extract HTML Main。
项目地址:
它解决什么问题?
这个工具的目标很简单:
从杂乱 HTML、本地保存网页和 URL 中提取真正的正文内容。
也就是尽量只保留读者真正想看的内容,把导航、广告、评论、推荐、footer 等页面噪声去掉。
适合这些场景:
-
AI 摘要前的数据清洗
-
RAG 知识库网页正文提取
-
爬虫正文清洗
-
AI Agent 自动处理网页内容
-
批量网页转 Markdown
快速开始
安装依赖:
bash install.sh
运行示例:
python3 scripts/extract_html_main.py examples/messy_article.html --format markdown
从本地 HTML 提取正文:
python3 scripts/extract_html_main.py input.html --format markdown
从 URL 提取正文:
python3 scripts/extract_html_main.py https://example.com/article --format markdown
如果要处理动态网页,可以安装 Playwright / Chromium 渲染能力:
bash install.sh --with-browser
支持哪些能力?
目前支持:
-
raw HTML
-
本地 HTML 文件
-
URL
-
Playwright / Chromium 动态页面渲染
-
静态 HTTP fallback
-
手动 CSS selector
-
selector 缓存
-
text / markdown / json 输出
-
原 HTML vs 提取正文 HTML 对比页
如果你已经知道某个网站的正文容器,比如 .article-body,也可以手动指定:
python3 scripts/extract_html_main.py input.html --selector ".article-body" --format markdown
核心思路
这个工具的基本判断逻辑是:
网页正文通常信息密度更高;噪声区通常链接密度更高、文本更短,并且 class / id 命名更偏向 nav、comment、ad、related、footer 等。
所以它会大致做这几步:
-
获取尽量完整的 DOM。
-
移除明显噪声节点,比如 script、style、nav、header、footer、aside、form、隐藏节点、广告、评论和分享区域。
-
从 article、main、role=main、正文命名节点和大块布局节点中生成候选正文容器。
-
根据文本长度、段落数量、标点密度、语义标签、链接密度和噪声命名打分。
-
选择最高分节点。
-
清理重复文本和空白。
-
输出 text、markdown 或 json。
为什么这个东西有用?
因为现在很多 AI 应用都会处理网页内容。
但网页不是干净文本,网页里有大量模板信息。如果不先清洗,后面无论是摘要、RAG 入库,还是 Agent 分析网页,效果都会被噪声拖累。
所以正文提取不是一个小细节,而是 AI 数据处理链路里的基础步骤。
项目地址
GitHub:
欢迎试用、提 issue、点 star。
如果你也在做 AI 摘要、RAG、网页采集或者 Agent 自动化处理网页内容,这个项目应该会有一些参考价值。
更多推荐


所有评论(0)