网页正文提取这件事,大部分人选工具的路径是这样的:先搜"网页正文提取工具",看到一堆推荐帖,然后随便挑一个免费的开源库跑一遍,发现十个网站里有三个提取出来的是导航栏文字、两个是空白、还有一个把评论区当成了正文,最后得出结论"这玩意儿不靠谱"。但实际的情况是,不是正文提取不靠谱,是你没搞清楚自己的需求落在哪个象限——你提取的是静态新闻网站还是React渲染的SPA页面,你处理的是中文还是英文,你要的是"一篇文章的纯文本"还是"结构化数据(标题/作者/日期/正文/图片)",这三个问题直接决定了该用什么工具,用错了就是拿镰刀砍树。
2026年网页正文提取工具三层架构
2026年能做正文提取的工具可以分成三层:开源算法库(Readability/Newspaper3k/Trafilatura/Boilerpipe,免费但需要写代码)、可视化爬虫平台(Octoparse/ParseHub/Apify,点选操作不用写代码但按量收费)、AI自动提取API(Diffbot,丢URL进去自动识别正文和实体,但入门$299/月)。三层之间不是"谁更好"的关系,是"你的技术能力和预算落在哪一层"的关系。
一、先搞清楚你的需求在哪个象限
| 你的情况 | 应该用的工具层 | 预算 |
|---|---|---|
| 会写Python,提取几百篇新闻/博客正文 | 开源算法库:Trafilatura + Newspaper3k | ¥0 |
| 不会写代码,需要批量提取几十个网站的正文 | 可视化爬虫:Octoparse / ParseHub | $69-$189/月 |
| 需要从任意类型网站自动提取,不想逐个配规则 | AI自动API:Diffbot | $299/月起 |
| 需要爬取React/Vue等SPA页面(JS渲染) | 必须配合Playwright/Puppeteer/Splash,算法库单独处理不了 | 加一层渲染工具 |
| 需要正文+结构化数据(标题/作者/日期/图片URL) | Trafilatura(结构化输出最强)或 Diffbot | ¥0 或 $299/月 |
二、四款开源算法库横评:中文网页正文提取的及格线
2026年主流的开源正文提取库有四款,各有各的强项和盲区。根据2026年6月技术栈发布的实测对比数据:
中文网页正文提取的推荐组合:Trafilatura做正文提取 + lxml/BeautifulSoup做后处理清洗。Trafilatura在2026年的中文网页上表现优于Readability,因为它不依赖HTML5语义标签(article/main/section),而是通过文本密度和DOM树分析来判断正文区域——中文网站大量使用div+class布局,Trafilatura的密度算法比Readability的语义标签策略更适合。
三、可视化爬虫平台:不用写代码,但有坑
如果不会写Python,或者需要快速从几十个网站提取正文而不想逐个写代码,可视化爬虫平台是折中方案。核心逻辑是:在浏览器里点选你要提取的内容区域,工具自动生成选择器,然后批量执行。

可视化平台的共同盲区:Octoparse和ParseHub本质上是"点选生成CSS选择器",不是"智能识别正文"。如果目标网站的HTML结构改了(哪怕只是class名加了个后缀),配置就失效了。对于正文提取这个特定需求,如果目标网站超过5个且结构各不相同,用可视化平台的配置工作量可能比直接写Python脚本还大。
四、Diffbot:丢URL进去自动出正文,但$299/月起步
Diffbot走的是完全不同的路线——它用AI模型自动识别任意网页的正文和结构化实体,不需要配置规则、不需要写选择器、不需要区分网站类型。它的Extract API接受一个URL,返回标题/作者/日期/正文/图片/视频/标签等标准化JSON。
Diffbot Extract API 的能力边界
| 自动识别正文 | 任意类型网页(新闻/博客/产品页/论坛/文档),AI模型自动判断正文区域,不依赖HTML标签语义 |
| 结构化输出 | 自动解析标题、作者、发布日期、正文HTML、纯文本、主图、视频、标签、语言等字段 |
| JS渲染 | 自动处理,无需额外配置,SPA页面直接返回渲染后的正文 |
| 定价 | 免费版10,000 credits/月(1个网页=1 credit,可长期免费使用);Startup $299/月(250,000 credits);Plus $899/月(1,000,000 credits) |
| 局限性 | 1 credit = 1次API调用,大批量提取成本迅速上升;中文网页的实体识别(人名/地名/机构名)不如英文准确;不能自定义输出字段 |
什么时候Diffbot值$299:需要从50种以上不同类型的网站提取正文,团队里没有人能写Python爬虫,而且每次提取的网站结构都不同。这种情况下,Octoparse的逐个配置成本远超$299/月,Diffbot反而是最便宜的方案。什么时候不值:只提取一种网站的正文(比如只爬某个新闻站),或者会用Python写Trafilatura脚本——这两种情况下$0的方案就够用。
五、五种翻车场景,对应五种选型错误
翻车一:用Readability提取中文div布局网站,正文混入导航栏
用Python Readability库提取一批中文科技博客的正文,结果每篇文章的开头都混入了"首页 分类 关于我们 联系"等导航栏文字。原因:这些中文博客用的是div+css布局,没有使用article/main/section等HTML5语义标签,Readability的规则引擎无法通过标签判断正文边界,把div容器内的所有文本全当正文了。

解法:换成Trafilatura——它不依赖HTML5语义标签,用文本密度算法判断正文区域。或者用Readability+lxml后处理,手动剔除短文本行(长度小于20字符的连续行大概率是导航)。
翻车二:所有开源库在SPA页面上全挂,返回空白
用Trafilatura提取一个React渲染的新闻网站,返回空字符串。用Readability试了也一样。原因:开源正文提取库只能处理服务端返回的原始HTML,React/Vue等SPA页面的正文是通过JavaScript在浏览器端动态渲染的,原始HTML里只有空div和script标签。
解法:在正文提取之前加一层JS渲染——用Playwright或Puppeteer先启动无头浏览器渲染页面,拿到完整HTML后再交给Trafilatura。或者直接用Diffbot(自动处理JS渲染)或Octoparse(内置浏览器引擎)。
翻车三:Newspaper3k提取中文新闻,作者和日期全部错误
Newspaper3k自带中文支持(内置jieba分词),但提取中文新闻网页时,author字段经常返回页面顶部导航栏的文字,date字段返回的是页面底部版权信息里的年份。正文本身提取得还不错,但元数据基本不可用。

解法:中文网页的元数据提取用Trafilatura(JSON-LD/Open Graph/meta标签三层解析),正文用Newspaper3k也行,但author和date字段不要信,自己写正则从URL或页面里单独提取。
翻车四:Octoparse配了30个网站的正文提取规则,第三周全失效
花了两天用Octoparse给30个不同结构的网站逐一配置了正文提取规则。三周后重新运行,18个网站的配置失效——因为网站改版了CSS class名。每次改版都要重新点选配置。
可视化工具的配置本质上是脆弱的CSS选择器。如果目标网站结构不稳定或数量多,要么接受定期维护的成本,要么上Diffbot这种不需要配置规则的AI方案,要么自己写Trafilatura脚本(算法识别比CSS选择器鲁棒性高得多)。
翻车五:批量提取1000篇文章后IP被封,所有请求返回403
用Trafilatura+requests批量提取了同一个网站的1000篇文章,前300篇正常,第301篇开始全部返回403。网站的反爬机制根据请求频率和单一IP的请求密度触发了封禁。
解法:正文提取工具只管"从HTML里提取正文",不管"怎么拿到HTML"。批量提取必须加上请求间隔(3-8秒随机)、User-Agent轮换、代理IP池。如果目标站反爬严格,建议直接用Apify(内置代理轮换和速率控制)或者Diffbot(自带代理池)。
六、七种场景速查:你的情况该用哪个
说穿了
网页正文提取这件事,2026年不缺工具,缺的是搞清楚自己提取的是什么类型的网页。静态新闻博客用Trafilatura十行Python代码搞定,SPA单页应用必须加Playwright渲染,结构各不相同的几十个网站要么花时间逐个配置Octoparse规则、要么花钱用Diffbot一劳永逸。最容易翻车的三个点:用Readability处理中文div布局网站(正文混入导航)、不开JS渲染就去提取React/Vue页面(返回空白)、批量提取不加请求间隔和代理IP(被封得莫名其妙)。把这三点规避掉,正文提取的成功率能从60%提到95%以上。
