网页正文提取工具:Readability

18 sec read

从网页中提取出主要内容,一直是一个比较有挑战的算法。Readability是其中一个很不错的实现。Readability之前是开源的,后来不再公开了,这里还有当初的开源版本可以参考:arc90labs-readability – Readability cleans up hard-to-read articles on the Web

Readability通过遍历Dom对象,通过标签和常用文字的加减权,来重新整合出页面的内容。接下来我们就简单看看这个算法是如何实现的。首先,它定义了一系列正则:

可以看到,标签和文字都有加权或降权分组。整个内容分析是通过grabArticle函数来实现的。首先开始遍历节点:

然后将不像内容的元素去掉:

将DIV替换为P标签后,再对目标节点进行遍历,进行计分:

最后根据分值,重新拼接内容

可以看到,里边用到了很多很trick的技巧,比如25字以下的段落不计分。目前已经有很多其他语言的版本,但是考虑到原始功能是针对的英文页面进行设计的。在移植过程中需要考虑:

  • 支持GBK, GB2312等编码
  • 支持更多的视频网站,比如优酷、土豆等
  • 支持提取文章标题
  • 支持图片相对路径转成绝对路径

目前收集到的比较好的移植版本为:

打赏作者
微信支付标点符 wechat qrcode
支付宝标点符 alipay qrcode

C语言学习:size_t

在学习C语言的时候,遇到了一个新的数据类型size_t,截止目前也没有完全理清这个类似的具体场景及出现的原因。
44 sec read

C语言学习:main()函数的正确写法

C语言虽然是一门古老的语言,但是其标准一直在完善,所以很多以前支持的语法在到当前已经不能在使用了。 C语言的版
41 sec read

Scipy数学函数的Scala实现

最近在推进项目的时候,遇到需要将线下的Python代码转化成线上的集群代码,由于机器代码环境是Scala,所以
4 min read

发表评论

电子邮件地址不会被公开。 必填项已用*标注