大部分网页正文提取算法都是根据开源的 Readability 算法修改的,主要是计算文本密度,以及 link 密度,评估最可能的节点,然后在扣除 评论之类的内容。算法依赖经验参数,不容易改进。这种算法确实如 lookhi 说的,“猜”测的。
后来 Readability 改为闭源,算法在后台运行,应该有一些网页是根据数据来改进。
Chrome 插件 Send to Kindle (by
Klip.me) 的正文提取算法是另一种方法,模仿人眼的对焦过程,先在页面的可视区域找到 “种子”,然后在扩大/收缩。并且能够根据用户的高亮选择自动训练出对焦数据。但是这种方法需要网页加载渲染完毕,适合作为插件,不适合在 Server 端运行。相对来说,对焦算法算是 “推”测的
还有一种方法,通过“同构分析”反推出网页的“生成”结构,diffbot 可能用的是这种方法。这种方法我之前做过试验,能获得结果的情况下准确度高。不过当时算法没做完,许多网站没有反推出结构。