如果你用过 Pocket getpocket.com,那么当你添加一个网页后,点击进去,Pocket会为你生成一个包含正文的阅读界面。那么这个从各种网站杂乱的html中抽出正文的功能是如何实现的呢,有没有什么开源的第三方库呢?貌似Safari中的阅读列表也有类似的生成正文的功能。
1
ryanking8215 2015-03-10 12:49:39 +08:00
会不会把样式都去掉了,或者是自己的样式。
|
2
raptium 2015-03-10 12:56:33 +08:00
印象中最早实现这个功能的东西叫 readability
|
3
multiple1902 2015-03-10 12:57:08 +08:00
Shuyi Zheng, Ruihua Song, and Ji-Rong Wen. Template-Independent News Extraction Based on Visual Consistency. In the Proceedings of AAAI 2007, 2007
http://www.aaai.org/Papers/AAAI/2007/AAAI07-239.pdf |
4
KyL OP @ryanking8215 但是一个原始的网页中除了正文,还有其他的文本,包括导航,广告,一些说明文字,评论等等。仅仅去掉样式并不能解决这些多余的文本吧。
|
5
h4x3rotab 2015-03-10 13:00:50 +08:00
@multiple1902 正解,苹果的阅读器用的是神经网络实现的
|
6
max0ne 2015-03-10 13:03:42 +08:00
|
7
jinchun 2015-03-10 13:06:35 +08:00
网站DOM结构越接近标准越好折腾。。
|
9
fourj 2015-03-10 14:48:59 +08:00
@ryanking8215 感觉会是去css & style,保留tag,增加自己的样式。
实现正文提取,比较困难的是找到正文,和去掉噪音内容,都需要不少策略~ 推荐个开源项目: https://code.google.com/p/boilerpipe/ |
10
babyname 2015-03-10 14:51:29 +08:00
内容萃取
|
11
metrue 2015-03-10 14:53:39 +08:00
最近也开始这样做这样子的项目,目前使用的方法也只是去掉样式,留下tag方式,坐等更好的解决方案。
|
12
laoyuan 2015-03-10 16:02:52 +08:00
不行就弄个网页做黑盒
|
13
zj299792458 2015-03-10 16:20:51 +08:00 via iPhone
html的<p>不就是正文?
|
14
JoeShu 2015-03-10 17:07:12 +08:00 1
据我作爬虫的经验,提供几个思路
1. 基于网站的模板,对于某个具体的网站上的页面, 正文部分在页面上的位置一般都比较固定的,根据xpath可以很容易提取出来。缺点是需要和服务端通信,而且创建模板需要人工的干预。 2. 一般阅读的正文都有一定的特征,比如含有标题,正文一般是整个页面最长的,包含很多特征标签(如<p>等), js代码很少等等,根据这些特征可以计算出页面上正文部分的位置。好处是可以离线处理,缺点是识别率可能稍低。 实际应用很可能是多种方式的叠加。 |
15
alsotang 2015-03-10 18:34:36 +08:00
@zj299792458 印象中 div 里面才是
|
16
KyL OP |
17
sundyli 2017-07-24 15:22:34 +08:00
html2article 算法, 可以基于文本密度实现, 我撸了一个 https://github.com/sundy-li/html2article
|