互联网的页面展现形式相当丰富,但是如果按页面结构特征来分类,却不外乎以下几种类型:首页(包括栏目首页),列表页,内容页,评论页。

(1) **首页: **网站的首页, 一般含有多个栏目、图片、动画,以及若干文章标题链接。如: 网易首页。

(2) 列表页: 信息以列表的方式给出, 一般以表格的形式列出若干个条目, 经常含有分页功能。例如: 某论坛版面的文章标题列表。

(3) 内容页: 指含有正文内容的底层网页, 一般只含有不超过一篇的文章内容, 无评论或评论较少。如: 各类网站的含有具体某篇文章的底层网页。

(4) **评论页: **除了含有正文, 正文后面还跟有若干个评论,以论坛为代表。

在这几种类型之中,信息含量最大的当数内容页,它是我们平常摄取信息的主要来源。由于内容页的重要性,不同的Web站点为了加强内容页的展示,都会加入一些与内容相关或无关的信息块,如导航,广告等。虽然这些信息块在一定程度上有助于我们的延伸阅读,但很多情况下,我们只需要获取正文信息就可以了,其他信息块反倒成了一种干扰。如何从一个内容页面中,正确提取出正文信息,就成了一个研究课题。

在详述之前,先说一下正文提取的意义。以笔者的经历看来,应用包括但不限于以下几个方面。

(1) **采集,搜索。**信息采集很常见,互联网上超过30%的内容都是从其他Web站点采集而来。现在的采集系统或工具,大多是基于页面的正则来进行信息采集的,这样的优点是,对于需要采集的信息精确度很高,但是缺点也是很明显的,由于是基于页面的Html源码来采集,一旦源站点改版或调整,导致页面的Html源码改变,所有正则将全部作废。而正文提取技术,不是以Html源码格式为依据,所以Html源码的改变相对来说影响不大。

(2) **门户文章发布。**很多门户站点,并没有专门的记者团队,大部分文章都靠编辑在网上复制粘贴。如果能在发布界面加个功能,只需要输入网址,即可正确导入正文内容,并自动处理图片,想必是个不错的用户体验。

(3)**Wap浏览器。**Wap浏览由于受到流量及手机屏幕的限制,现在的Wap页面大部分以特出文字信息为主,但也不排除会有一些干扰信息块出现。作为用户,希望能只显示正文信息,特别是对于新闻及小说等页面。Wap浏览器如果可以将正文内容自动提取出来,应该是个不错功能。Android系统的迷人浏览器有个阅读模式,算是在这方面的一个探索。

正文提取技术的算法很多,本文是基于多特征的一种算法研究,根据信息块的特征进行判定。内容页又称为主题页,主题内容通常可以分解层次为: ①标题; ②发布时间; ③内容正文; ④相关文章或延伸性阅读。除了“内容正文”为必须元素外,其他几个元素都不一定会在内容页出现。根据对大量不同网页观察,各个元素的位置及表现形式虽无固定的标准,但是大部分却满足一定的特征。

一.标题块

  • 分块节点:td,div,h,span
  • 一般位于Head/Title的位置
  • 当前单元含有<h1>-<h3><b><i><strong>等标签
  • 样式,一般class包含title,head等字符
  • 文字长度,一般大于3个字符,小于35个字符

二.发表时间块

  • 分块节点:td,div, span
  • 文字长度,一般小于50个字符
  • 包含日期格式(2010-08-09)的字符串
  • 包含以下关键字:来源,发表

三.主题块

  • 分块节点:td,div
  • HTML网页中有一些特殊标签,通常只出现在网页主题块中,如<P> <BR>等。因此,主题块中往往包含着特殊标签。
  • 主题块内容含有较多的句子,因此具有较多逗号、句号等标点符号(>5)。
  • 若从信息量角度考虑,主题块一般是含有较多文字信息。
  • 主题块的 标签密度=1000*标签数/文字数 应在小于一个范围。
  • 主题块的 文本密度=len(文本)/len(HTML代码) 较大
  • 不应该包含 “上一篇”,“下一篇”
  • 包含以下字符串的内容块,判定为包含版权信息,需减权:“ICP备04000001号”,“版权所有”,“Copyright”
  • 主题块序号在标题块之下
  • 主题块序号在发表时间块之下
  • 主题块序号在相关链接块之上

四.相关链接块

  • 分块节点:td,div
  • 文字应为“相关链接”、“相关新闻”、“相关报道”等敏感词,且连接比例很高。
  • 链接数小于20

实现:

根据以上信息块特征,采用特征提权算法,C#(3.5)编程实现,命名为QD正文提取组件。经测试,对Html格式规范的以文字为主的内容页,正确提取率在85%以上,各大门户的新闻页面在95%以上。

例子下载(需要安装Microsoft .NET Framework 3.5)

正文提取例子

注:QD正文提取组件 不开源,需要源码的朋友可选择付费获取。

例子程序最新版本为 1.0.4.0

所售源码包文件列表

组件源代码1份 (C#)

例子程序1个 (源码,运行界面见上图)

正文提取相关论文,找人到学校收费论文库下的,压缩包大概几十M

CAJViewer软件1个,看某些论文需要用到。

针对近期部分朋友的咨询,答复如下:

1.物价高涨,生活不容易,砍价亦麻烦,组件源码价格调整为¥300,此为底线,不再接受议价。

2.购买前,请先确定此组件对你是有价值的,以免浪费金钱。

3.由于程序源码的特殊性,不提供退货服务,请谅解。源码的效果与例子程序是一模一样的,请先下载例子程序测试,看看是否能满足你的要求,当然,你亦可通过对源码的修改(增改规则),以获得更好的效果。

4.程序的思路已写在此,时间比较充裕的朋友,建议自己编写程序。真需要购买的,偶亦很欢迎,但购买前请参照以上1~3条。

5.有意购买者,可联系Email:171630607@qq.com,QQ:171630607。请尊重劳动成果,勿传播源码。

6.有朋友说,例子程序在WIN7 64bit上无法运行。经测试,例子程序在XP、WIN7 32bit可以运行,WIN7 64bit和WIN8 64bit不能运行。原因是例子程序做了加密处理,未经加密的源码在以上系统均可正常运行。