具体实施方式
下面结合具体实施方式和附图对本发明进行详细描述。
新闻列表页的布局通常如图1所示,包括横幅模块、广告模块、新闻记录列表模块、噪音栏目模块、版权声明模块等。本发明的目的便是从新闻列表页中识别出新闻记录列表模块,并将该模块中的新闻记录抽取出来。新闻记录列表具有以下三个特点:①新闻记录的链接对应的文本较长;②目标核心链接较为集中;③在一个或几个DOM节点上目标链接的URL一般是相似的。本发明便是根据新闻记录列表的上述特点而实现的解决方案。
图2示出了本实施方式中从新闻列表页抽取新闻记录的系统结构。如图2所示,该系统包括生成装置21,与生成装置21连接的获取装置22,以及与获取装置22连接的抽取装置23。
生成装置21用于获取目标新闻列表页面的网页源代码,并按照所述网页源代码对应的HTML文本顺序生成HTML标签树。
获取装置22用于遍历HTML标签树,并计算每个HTML标签子树的文本链接比得分,将文本链接比得分大于设定阈值的标签子树进行合并,获取一棵最大候选子树。
抽取装置23用于从最大候选子树中抽取新闻记录元数据列表。
图3示出了采用图2所示系统从新闻列表页抽取新闻记录的方法流程。如图3所示,该方法包括以下步骤:
(1)获取目标新闻列表页的网页源代码,按照所述网页源代码对应的HTML文本顺序生成HTML标签树。所述HTML标签树是一个以标签html为根节点的层次树,它是严格按HTML文本顺序来生成的。
较佳的,在生成HTML标签树之前,先对目标新闻列表页的网页源代码进行过滤,除去噪音节点。所述噪音节点包括:head节点、注释节点、script等脚本节点、input节点、form节点、select节点、textarea节点、style节点,字体节点等。当然不仅仅限于上述节点,所有根据具体应用环境需要除去的节点都属于噪音节点。
例如:新浪网站的某新闻列表页去除了噪音节点后的网页源代码如下:
<html xmlns=″http://www.w3.org/1999/xhtml″>
<body>
<div class=″secondaryHeader″>
<div class=″sHBorder″>
<div class=″sHLinks″><a href=″http://news.sina.com.cn/″>新闻首页</a> ;| ;<a
href=″http://www.sina.com.cn/″>新浪首页</a> ;| ;<a href=″http://news.sina.com.cn/guide/″>新浪导
航</a></div>
</div>
</div>
<div class=″Nav″style=″position:relative;″>
<div class=″NavLink″id=″blk_lmdh_01″>
<a href=″http://www.sina.com.cn/″>首页</a>
<a href=″http://news.sina.com.cn/china/″>国内</a>
<a href=″htt://news.sina.com.cn/world/″>国际</a>
<a href=″http://news.sina.com.cn/society/″>社会</a>
</div>
<div class=″NavSelect″>
<h4 onclick=″OpenNavSelect();″>手机订阅</h4>
<div id=″blk_sjdy_01″>
<a href=″http://sms.sina.com.cn/docs/c/ttxw.html?from=403″target=″_blank″>头条短信</a>
<a href=″http://sms.sina.com.cn/docs/c/yuleshehui.html?from=403″target=″_blank″>社会新闻
</a>
<span class=″line″></span>
<a href=″http://sms.sina.com.cn/docs/c/yuleshehui-zh.html?from=430″target=″_blank″>娱乐资讯
</a>
</div>
</div>
<div id=″Main″>
<div class=″listBlk″>
<ul class=″list_009″>
<li><a href=″http://news.sina.com.cn/pc/2010-10-14/27/5750.html″target=″_blank″>图文播报:2010年度十大法治人物评选启动仪式</a><span>(10月14日10:18)</span></li>
<li><a href=″http://news.sina.com.cn/c/2010-10-14/091621273505.shtml″target=″_blank″>上海白菜未受韩国泡菜危机影响涨价</a><span>(10月14日09:16)</span></li>
<li><a href=″http://news.sina.com.cn/c/2010-10-14/083721273149.shtml″target=″_blank″>正直播长沙选拔市管领导正职竞争大会</a><span>(10月14日08:37)</span></li>
<li><a href=″http://news.sina.com.cn/c/2010-10-14/082821272947.shtml″target=″_blank″>成都规定房企预售款须银行监管按工程进度拨付</a><span>(10月14日08:28)</span></li>
<li><a href=″http://news.sina.com.cn/c/2010-10-14/082621272945.shtml″target=″_blank″>广西长洲水利枢纽船闸施工受阻多名警察受伤</a><span>(10月14日08:26)</span></li>
<li><a href=″http://news.sina.com.cn/c/2010-10-14/082521272932.shtml″target=″_blank″>上海暂停用公积金购买非改善型二套房</a><span>(10月14日08:25)</span></li>
<li><a href=″http://news.sina.com.cn/c/2010-10-14/082221273232.shtml″
target=″_blank″>我国首例艾滋病就业歧视案最迟11月宣判</a><span>(10月14日08:22)</span></li>
<li><a href=″http://news.sina.com.cn/c/2010-10-14/080021272696_2.shtml″target=″_blank″>温州官方称当地民间资本热钱化系媒体炒作</a><span>(10月14日08:00)</span></li>
</ul>
</div>
</div>
<div class=″footer″>
<p><a href=″http://corp.sina.com.cn/chn/″class=″sinatail″>新浪简介</a>|
<a href=″http://corp.sina.com.cn/chn/sina_job.html″class=″sinatail″>招聘信息</a>|
<a href=″http://www.sina.com.cn/intro/lawfirm.shtml″class=″sinatail″>网站律师</a>|
<p>Copyright<span class=″copyright″>©;</span>1996-2009 SINA Corporation,All Rights
Reserved</p>
<p>新浪公司<a href=″http://www.sina.com.cn/intro/copyright.shtml″class=″sinatail″>版权所有</a></p>
</div>
</body>
</html>
按照上述网页源代码生成的HTML标签树如图4所示。
(2)遍历所述HTML标签树,计算每个HTML标签子树的文本链接比得分,将文本链接比得分大于设定阈值的标签子树进行合并,获取一棵最大候选子树。如图5所示,具体过程包括如下步骤:
a.后序遍历HTML标签树,同时计算每棵标签子树的文本链接比得分,把大于设定阈值的子树归入候选子树中。所述文本链接比得分采用如下公式计算:
文本链接比得分=0.4×(子树中所有链接文本的字符长度-链接个数1)/子树中所有链接文本的字符长度+0.6×(子树中所有文本的字符长度-链接个数2)/子树中所有文本的字符长度。
其中,链接个数1和链接个数2的区别在于:链接个数1为不包括文本中链接的链接数量,链接2为包括文本中链接的链接数量。在标签子树中,通常会包含链接和文本,文本中也可能包含链接,链接个数1便是不包含文本中链接的链接数量。文本中的链接判定条件如下:①链接文本的字符长度/该文本的字符长度<0.2;②链接文本前后是纯文本,后面也是纯文本。同时满足如上两个条件,则可判定为文本中的链接。
较佳的,所述阈值的取值范围在0.9~1.0之间。阈值越接近0.9,新闻记录的召回率越高,即抽取的新闻记录越完整;阈值越接近1.0,新闻记录抽取的准确率越高。本实施方式中阈值取0.9,当节点链接个数大于2时,可以有100%的召回率。
b.当候选子树多于1棵时,对两棵候选子树进行合并。分以下两种情况进行合并:①如果候选子树SubTreeA和候选子树SubTreeB有属于关系,即SubTreeA是SubTreeB的子树,则在候选子树中除去SubTreeA,保留SubTreeB;②如果候选子树SubTreeA和候选子树SubTreeB分处不同子树,则遍历两子树的祖先节点,直至找到共同祖先节点为止,然后把以共同祖先节点为根节点的子树作为候选子树,把其他两棵子树除去。遍历完整棵树得到的候选子树即为最大候选子树。
较佳的,获取到最大候选子树后,层次遍历最大候选子树,记录每个链接节点的层次路径。链接节点的层次路径可以进行如下设置:将最大候选子树的根节点视为0,其下每一层节点从左至右依序标记数字1、2、3等;将从根节点到该节点的父结点之间的路径作为该节点的层次路径。可以将层次路径对应的标记数字按照遍历顺序依次存入数组中,数组的下标和层次一一对应。例如,一个节点的层次路径为0、1、4、9,另一个节点的层次路径为0、1、4、12。
(3)从最大候选子树抽取新闻记录元数据列表。如图6所示,具体过程包括以下步骤:
a.获取最大候选子树的所有链接及其文本。
b.根据设定的规则过滤掉杂质链接。本实施方式中,杂质链接包括导航链接和链接文本字符长度小于10的链接。
c.计算两两链接之间的距离。所述两两链接之间的距离是指两两链接的相似程度,具体的计算方法如下:
首先通过设定的符号对链接进行分割,分割出子字符串;然后计算两个链接相同位置的对应子字符串的距离,将子字符串距离进行累加,将累加结果作为两两链接之间的距离。子字符串距离的计算规则为:相同为0,相似(前几个字符完全相同,一般为5个字符)为1,同样的模式(如英文字母+数字)为2,其余情况为5。
例如,计算如下两个链接的距离。
链接1:http://news.163.com/10/0915/02/6GJBK5PR00011229.html。
链接2:http://news.163.com/10/0914/08/6GHDR0G000011229.html。
先用“:”、“/”和“.”对两个链接进行分割,分割出子字符串。
链接1的子字符串如下:http、news、163、com、10、0915、02、6GJBK5PR00011229、html。
链接2的子字符串如下:http、news、163、com、10、0914、08、6GHDR0G000011229、html。
然后分别计算各个对应子字符串的距离,进行累加,其结果即为链接1和链接2的距离:0+0+0+0+0+1+1+1+0=3。
d.生成两两链接互联的无向图,所述无向图的顶点为链接,边为两两链接的距离。
e.利用最小生成树kruskal算法对无向图进行分割,分割出新闻记录链接列表,进而得到新闻记录元数据列表。
例如:新闻记录链接列表如下:
http://news.163.com/10/1014/06/6IUGSEST00014JB6.html;
http://news.163.com/10/1013/14/6ISP9VBG0001124J.html;
http://news.163.com/10/1013/11/6ISF90BQ00014JB6.html;
http://news.163.com/10/1013/07/6IS0PLQB0001121M.html;
http://news.163.com/10/1013/07/6IS05BI600014JB6.html;
http://news.163.com/10/1013/08/6IS3BUSN00014JB5.html;
http://news.163.com/10/1012/20/6IQQ63GI0001124J.html;
http://news.163.com/10/1012/17/6IQGKKG20001124J.html;
从上述新闻记录链接列表获得的新闻记录元数据列表如下:
http://news.163.com/10/1014/06/6IUGSEST00014JB6.html;哈尔滨规定重大突发事件不及时发布将问
http://news.163.com/10/1013/14/6ISP9VBG0001124J.html;文化部网游主管部门称未说禁止偷菜游戏
http://news.163.com/10/1013/11/6ISF90BQ00014JB6.html;国土部通报四川简阳市政府违法批地等5
http://news.163.com/10/1013/07/6IS0PLQB0001121M.html;首届东盟防长扩大会议闭幕 南海问题未
http://news.163.com/10/1013/07/6IS05BI600014JB6.html;外交部就菲律宾人质事件、中日关系等答
http://news.163.com/10/1013/08/6IS3BUSN00014JB5.html;中国5年内将投入数千亿解决防洪体系薄
http://news.163.com/10/1012/20/6IQQ63GI0001124J.html;西北地区警务协作机制建立 涉及情报共
http://news.163.com/10/1012/17/6IQGKKG20001124J.html;最高检发文规范检察官行为 要求慎重社
较佳的,如果分割出的新闻记录链接数大于50,对分割出的链接再次生成两两互联的无向图,无向图的顶点为链接,边为两两链接的层次路径之间的距离;再利用最小生成树kruskal算法对无向图进行分割,分割出新闻记录链接列表,进而得到新闻记录元数据列表。层次路径之间的距离的计算方法为:从左至右,顺次比较两个层次路径相同位置上的字符;如果相同,则继续比较下一个,如果不同,终止比较;距离为字符不同时该字符的位置序号,即相同字符的个数。例如:层次路径1为0、1、4、9,层次路径2为0、1、4、12,其距离为3。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。