网页发布时间抽取方法和用于网页发布时间抽取的装置技术领域
本发明涉及云计算领域,尤其是一种网页发布时间抽取方法和用
于网页发布时间抽取的装置。
背景技术
在互联网时代,网页是承载消息内容发布的重要载体。除了直接
从网页中获取阅读资讯,对资讯进行深层次的分析也是人们关注的一
个重点。
对网页中的资讯进行分析的前提是解析出网页的内容。在网页抽
取问题中,特别对消息资讯类网页进行抽取时,网页发布时间是一个
重要属性。目前主要依据正则表达式规则进行网页发布时间的抽取。
但是一个网页往往包含多个时间,仅通过简单正则表达式匹配出来时
间并不能确定具体的网页发布时间。此外,搜索引擎在抓取网页时,
往往是将网页源码的HTTP(HyperText Transfer Protocol,超文本
传输协议)头文件中的时间作为网页的发布时间,然而HTTP头文
件中的时间为网页最后的修改时间,网页可能在发布后进行了修改,
无法代表网页的发布时间。
发明内容
本发明实施例所要解决的一个技术问题是:如何准确地抽取网页的
发布时间。
根据本发明实施例的第一个方面,提供了一种网页发布时间抽取方
法,其特征在于,包括:建立网页源码的文档对象模型DOM树;在
DOM树中确定网页标题节点;根据网页发布时间节点与网页标题节
点在DOM树中的相对位置关系确定网页发布时间。
在一个实施例中,根据网页发布时间节点与网页标题节点在DOM
树中的相对位置关系确定网页发布时间包括:如果在网页标题节点所
属的父节点下有时间节点,将时间节点中的时间信息提取为网页发布
时间。
在一个实施例中,如果在网页标题所在的标签对应的节点所属的
父节点下有时间叶子节点,将时间叶子节点中的时间信息提取为网页
发布时间;或者,如果在网页标题所在的标签对应的节点所属的父节
点下有时间所在的标签,从时间所在的标签中提取时间信息并作为网
页发布时间。
在一个实施例中,根据网页发布时间节点与网页标题节点在DOM
树中的相对位置关系确定网页发布时间包括:确定网页标题节点的父
节点的次左子节点,如果次左子节点的若干子树下的左子树节点是时
间节点,将时间节点中的时间信息提取为网页发布时间。
在一个实施例中,根据网页发布时间节点与网页标题节点在DOM
树中的相对位置关系确定网页发布时间包括:如果在网页标题节点所
属的父节点下有时间节点,将时间节点中的时间信息提取为网页发布
时间;如果在网页标题节点所属的父节点下没有时间节点,确定网页
标题节点的父节点的次左子节点,如果次左子节点的若干子树下的左
子树节点是时间节点,将时间节点中的时间信息提取为网页发布时间。
在一个实施例中,根据网页发布时间节点与网页标题节点在DOM
树中的相对位置关系确定网页发布时间包括:如果在网页标题所在的
标签对应的节点所属的父节点下有时间叶子节点,将时间叶子节点中
的时间信息提取为网页发布时间;如果在网页标题所在的标签对应的
节点所属的父节点下没有时间叶子节点,在网页标题所在的标签对应
的节点所属的父节点下查找是否有时间所在的标签,如果有,从时间
所在的标签中提取时间信息并作为网页发布时间;如果网页标题所在
的标签对应的节点所属的父节点没有时间所在的标签,确定网页标题
节点的父节点的次左子节点,如果次左子节点的若干子树下的左子树
节点是时间节点,将时间节点中的时间信息提取为网页发布时间。
在一个实施例中,根据网页发布时间节点与网页标题节点在DOM
树中的相对位置关系确定网页发布时间包括:在DOM树中查找时间
节点,判断查找到的时间节点与网页标题节点是否符合网页发布时间
节点与网页标题节点在DOM树中的相对位置关系,将符合条件的时
间节点确定为网页发布时间节点,并从网页发布时间节点中提取网页
发布时间。
在一个实施例中,方法还包括:如果符合条件的时间节点有多个,
将离DOM树的根节点近的符合条件的时间节点确定为网页发布时间
节点。
在一个实施例中,在DOM树中确定网页标题节点包括:根据网
页标题所在的标签类型、唯一编码属性或者类属性在DOM树中确定
网页标题节点。
根据本发明实施例的第二个方面,提供一种用于网页发布时间抽取
的装置,包括:文档对象模型DOM树建立模块,用于建立网页源码
的DOM树;标题节点确定模块,用于在DOM树中确定网页标题节
点;发布时间确定模块,用于根据网页发布时间节点与网页标题节点
在DOM树中的相对位置关系确定网页发布时间。
在一个实施例中,发布时间确定模块包括第一时间节点查找单元
和第一时间信息提取单元;第一时间节点查找单元用于查找在网页标
题节点所属的父节点下是否有时间节点,如果有,第一时间信息提取
单元用于将时间节点中的时间信息提取为网页发布时间。
在一个实施例中,第一时间节点查找单元用于查找在网页标题所
在的标签对应的节点所属的父节点下是否有时间叶子节点,如果有,
第一时间信息提取单元用于将时间叶子节点中的时间信息提取为网页
发布时间;或者,第一时间节点查找单元用于查找在网页标题所在的
标签对应的节点所属的父节点下是否有时间所在的标签,如果有,第
一时间信息提取单元用于从时间所在的标签中提取时间信息并作为网
页发布时间。
在一个实施例中,发布时间确定模块包括第二时间节点查找单元
和第二时间信息提取单元;第二时间节点查找单元用于确定网页标题
节点的父节点的次左子节点,并查找在次左子节点的若干子树下的左
子树节点是否有时间节点,如果有,第二时间信息提取单元用于将时
间节点中的时间信息提取为网页发布时间。
在一个实施例中,发布时间确定模块包括第三时间节点查找单元
和第三时间信息提取单元;发布时间确定模块用于查找在网页标题节
点所属的父节点下是否有时间节点,如果有,第三时间信息提取单元
用于将时间节点中的时间信息提取为网页发布时间;发布时间确定模
块还用于在网页标题节点所属的父节点下没有时间节点时,确定网页
标题节点的父节点的次左子节点,并判断次左子节点的若干子树下的
左子树节点是否为时间节点,如果是,第三时间信息提取单元用于将
时间节点中的时间信息提取为网页发布时间。
在一个实施例中,发布时间确定模块包括第四时间节点查找单元
和第四时间信息提取单元;第四时间节点查找单元用于查找在网页标
题所在的标签对应的节点所属的父节点下是否有时间叶子节点,如果
有,第四时间信息提取单元用于将时间叶子节点中的时间信息提取为
网页发布时间;第四时间节点查找单元还用于在网页标题所在的标签
对应的节点所属的父节点下没有时间叶子节点时,查找在网页标题所
在的标签对应的节点所属的父节点下是否有时间所在的标签,如果有,
第四时间信息提取单元用于从时间所在的标签中提取时间信息并作为
网页发布时间;第四时间节点查找单元还用于在网页标题所在的标签
对应的节点所属的父节点没有时间所在的标签时,确定网页标题节点
的父节点的次左子节点,并查找次左子节点的若干子树下的左子树节
点是否有时间节点,如果有,第四时间信息提取单元用于将时间节点
中的时间信息提取为网页发布时间。
在一个实施例中,发布时间确定模块包括第五时间节点查找单元、
位置关系判断单元和第五时间信息提取单元;第五时间节点查找单元
用于在DOM树中查找时间节点;位置关系判断单元用于判断查找到
的时间节点与网页标题节点是否符合网页发布时间节点与网页标题节
点在DOM树中的相对位置关系;第五时间信息提取单元用于将符合
条件的时间节点确定为网页发布时间节点,并从网页发布时间节点中
提取网页发布时间。
在一个实施例中,第五时间信息提取单元用于当符合条件的时间
节点有多个时,将离DOM树的根节点近的符合条件的时间节点确定
为网页发布时间节点。
在一个实施例中,标题节点确定模块用于根据网页标题所在的标
签类型、唯一编码属性或者类属性在DOM树中确定网页标题节点。
通过根据DOM中网页发布时间节点与网页标题节点的位置关系
确定网页发布时间,能够准确定位网页发布时间,适用于自动化的网
页发布时间抽取。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明
的其它特征及其优点将会变得清楚。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将
对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见
地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技
术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得
其他的附图。
图1示出本发明网页发布时间抽取方法的一个实施例的流程图。
图2示出资讯类网页的部分截图的示意图。
图3示出图2所示的部分网页对应的一种代码中的文本和标签构
成的DOM树的示意图。
图4示出图2所示的部分网页对应的另一种代码中的文本和标签
构成的DOM树的示意图。
图5示出图2所示的部分网页对应的又一种代码中的文本和标签
构成的DOM树的示意图。
图6示出本发明用于网页发布时间抽取的装置的一个实施例的结
构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案
进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实
施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实
际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前
提下所获得的所有其他实施例,都属于本发明保护的范围。
下面参考图1描述本发明一个实施例的网页发布时间抽取方法。
图1为本发明网页发布时间抽取方法的一个实施例的流程图。如图
1所示,该实施例的方法包括:
步骤S102,建立网页源码的DOM(Document Object Model,文
档对象模型)树。
DOM可以采用独立于平台和语言的方式访问和修改HTML、
XML文档的内容和结构。在根据HTML文档建立的DOM树中,每
一个标签或者文本节点都是DOM树中的一个节点。
步骤S104,在DOM树中确定网页标题节点。
其中,网页标题节点可以是在DOM树中网页标题文本所在的节
点,也可以是网页标题所在标签的节点。
步骤S106,根据网页发布时间节点与网页标题节点在DOM树中
的相对位置关系确定网页发布时间。
其中,网页发布时间节点可以是在DOM树中网页发布时间文本
所在的节点,也可以是网页发布时间所在标签的节点。
通过根据DOM中网页发布时间节点与网页标题节点的位置关系
确定网页发布时间,能够准确定位网页发布时间,适用于自动化的网
页发布时间抽取。
在步骤S104中,可以根据网页标题所在的标签类型、唯一编码属
性或者类属性在DOM树中确定网页标题节点。标题的本文通常放置
在特殊的标签中,例如放置在表示大号字体的h1标签或者表示链接的
a标签中。除了使用特殊标签对网页标题所在的标签加以识别以外,
还可以通过网页标题所在的标签的具体属性内容确定网页标题所在的
DOM节点。标签可以通过id(唯一编码)属性或者class(类)属性
的具体内容标注标签的内容的具体含义,具有标题的标签例如可以为:
<div id=”title”>标题</div>,div标签通过其id属性中的“title”标注
其包含的内容为标题。显然,也可以采用其他方法确定网页标题所在
的标签,这里不再赘述。
通常,在解析后的、呈现在浏览器中的网页中,网页发布时间往
往紧随网页标题之后。而由于各个网页的具体前端布局不同,对于呈
现在网页中的形式相同的两个页面,其源代码的结构可能不同,即,
网页发布时间节点与网页标题节点在DOM树中的相对位置关系可能
不同。经过对大量的资讯类的网页进行统计和分析可知,网页的发布
时间所在的DOM节点与网页标题所在的DOM节点的相对位置关系
主要有两种。图2为资讯类网页的部分截图的示意图。下面以图2为
例,具体阐述根据网页发布时间节点与网页标题节点在DOM树中的
相对位置关系确定网页发布时间的两种方法。
第一种确定方法为:如果在网页标题节点所属的父节点下有时间
节点,将时间节点中的时间信息提取为网页发布时间。根据网页发布
时间节点为文本节点或者标签节点的差异,第一种确定方法还可以具
体分为以下的两种形式:如果在网页标题所在的标签对应的节点所属
的父节点下有时间叶子节点,将时间叶子节点中的时间信息提取为网
页发布时间;或者,如果在网页标题所在的标签对应的节点所属的父
节点下有时间所在的标签,从时间所在的标签中提取时间信息并作为
网页发布时间。下面结合图2中的部分网页的代码对第一种确定方法
的两种具体形式进行示例性的阐述。
当网页标题所在的标签对应的节点所属的父节点下有时间叶子节
点时,对于网页中图2展示的网页部分截图的代码例如可以为:
<div><h1>一种网页发布时间抽取方法</h1>2016-1-1<span>120
次阅读</span></div>
图3为由上述代码中各个文本及标签构成的DOM树的结构示意
图。如图3所示,网页标题所在的标签节点为h1节点,h1节点的父
节点为div节点,查找div节点的其他子节点,可以获取“2016-1-1”
这一时间叶子节点,“2016-1-1”即为网页发布时间。
当网页标题所在的标签对应的节点所属的父节点下有时间所在的
标签时,对于网页中图2展示的网页部分截图的代码例如可以为:
<div><h1>一种网页发布时间抽取方法</h1><span>
2016-1-1</span><span>120次阅读</span></div>
图4为由上述代码中各个文本及标签构成的DOM树的结构示意
图。由图4可知,网页标题所在的标签节点为h1节点,h1节点的父
节点为div节点,查找div节点的其他子节点,可以获取包含“2016-1-1”
这一时间的span标签,继而从span标签中提取时间信息,其中的
“2016-1-1”即为网页发布时间。
第一种确定方法通常用于前端代码的层次布局较为简单的网页。
网页标题节点和时间节点不仅在网页的视觉呈现中距离较近,同时在
DOM树中的层次相差也较小。通过采用这种确定方法,能够迅速地
定位网页发布时间节点,并准确地提取网页发布时间。
对于第一种确定方法中的两种具体方法,可以先采用前者,再采
用后者,即,如果在网页标题节点所属的父节点下有时间节点,将时
间节点中的时间信息提取为网页发布时间;如果在网页标题节点所属
的父节点下没有时间节点,确定网页标题节点的父节点的次左子节点,
如果次左子节点的若干子树下的左子树节点是时间节点,将时间节点
中的时间信息提取为网页发布时间。
第二种确定方法为:确定网页标题节点的父节点的次左子节点,
如果次左子节点的若干子树下的左子树节点是时间节点,将时间节点
中的时间信息提取为网页发布时间。当采用第二种确定方法获得网页
发布时间时,对于网页中图2展示的部分的代码例如可以为:
<div><h1>一种网页发布时间抽取方法</h1><p>
<span>2016-1-1</span><h4>120次阅读</h4></p></div>
图5为由上述代码中各个文本及标签构成的DOM树的结构示意
图。如图5所示,网页标题节点的父节点为div节点该div节点的次
左子节点为p标签,p标签下具有两个子树,分别为根节点为span的
子树和根节点为h4的子树。其中,根节点为span的子树为p标签的
左子树,查找根节点为span的子树中的时间节点,可以获取“2016-1-1”
这一时间信息,“2016-1-1”即为网页发布时间。这种情况通常出现
在前端代码的层次布局较为复杂的网页中。
第二种确定方法通常用于前端代码的层次布局较为复杂的网页。
虽然网页标题节点和时间节点在DOM树中的层次相差较大,但是依
旧可以通过上述方法确定在网页的视觉呈现中距离网页标题较近的时
间节点。通过采用这种确定方法,能够应对网页布局复杂的情况,并
准确地提取网页发布时间。
对于上述两种确定方法,可以先采用第一种确定方法,再采用第
二种确定方法。即首先查找距离网页标题节点层次较近的节点中是否
有时间节点,再查找距离网页标题节点层次较远的节点中是否有时间
节点。
在前述两种确定方法中,具体的确定顺序为:首先确定符合网页
标题节点和网页发布时间节点的位置关系的节点,再判断这些符合位
置关系的节点是否为时间节点。从另一个角度,还可以采用先确定网
页中的时间节点,再判断这些时间节点是否符合网页标题节点和网页
发布时间节点的位置关系的确定顺序,即:在DOM树中查找时间节
点,判断查找到的时间节点与网页标题节点是否符合网页发布时间节
点与网页标题节点在DOM树中的相对位置关系,将符合条件的时间
节点确定为网页发布时间节点,并从网页发布时间节点中提取网页发
布时间。两种确定顺序分别从不同的角度着手进行查找和判断,当网
页前端代码的层次结构相对简单时,采用前一种方法较为快捷;当网
页中包含的时间信息较少时,采用后一种方法效率更高。
当采用第二种确定顺序,即采用先查找时间节点、再判断位置关
系的方式时,可能会得到多个结果,此时可以采用以下方法从中选取
结果:如果符合条件的时间节点有多个,将离DOM树的根节点近的
符合条件的时间节点确定为网页发布时间节点。离DOM树较近的符
合条件的时间节点与标题节点的层次关系较为简单,因此相较于其他
节点,更有可能为包含网页发布时间的节点。
在上述查找时间节点的过程中,可以通过正则表达式判断节点中
的文本是否为表示时间的文本。Java语言、Python语言、JavaScript
语言等主流语言均支持根据正则表达式提取文本,可以根据实际使用
环境以及后续处理的需求选择正则匹配工具。
下面参考图6描述本发明一个实施例的用于网页发布时间抽取的
装置。
图6为本发明用于网页发布时间抽取的装置的一个实施例的结构
图。如图6所示,该实施例的装置包括:文档对象模型DOM树建立模
块62,用于建立网页源码的DOM树;标题节点确定模块64,用于在
DOM树中确定网页标题节点;发布时间确定模块66,用于根据网页
发布时间节点与网页标题节点在DOM树中的相对位置关系确定网页
发布时间。
其中,发布时间确定模块66具体可以采用以下几种具体结构。
第一种结构为:发布时间确定模块66可以包括第一时间节点查找
单元和第一时间信息提取单元;第一时间节点查找单元用于查找在网
页标题节点所属的父节点下是否有时间节点,如果有,第一时间信息
提取单元用于将时间节点中的时间信息提取为网页发布时间。
此外,第一时间节点查找单元还可以用于查找在网页标题所在的
标签对应的节点所属的父节点下是否有时间叶子节点,如果有,第一
时间信息提取单元用于将时间叶子节点中的时间信息提取为网页发布
时间;或者,第一时间节点查找单元用于查找在网页标题所在的标签
对应的节点所属的父节点下是否有时间所在的标签,如果有,第一时
间信息提取单元用于从时间所在的标签中提取时间信息并作为网页发
布时间。
第二种结构为:发布时间确定模块66可以包括第二时间节点查找
单元和第二时间信息提取单元;第二时间节点查找单元用于确定网页
标题节点的父节点的次左子节点,并查找在次左子节点的若干子树下
的左子树节点是否有时间节点,如果有,第二时间信息提取单元用于
将时间节点中的时间信息提取为网页发布时间。
第三种结构为:发布时间确定模块66可以包括第三时间节点查找
单元和第三时间信息提取单元;发布时间确定模块66用于查找在网页
标题节点所属的父节点下是否有时间节点,如果有,第三时间信息提
取单元用于将时间节点中的时间信息提取为网页发布时间;发布时间
确定模块66还用于在网页标题节点所属的父节点下没有时间节点时,
确定网页标题节点的父节点的次左子节点,并判断次左子节点的若干
子树下的左子树节点是否为时间节点,如果是,第三时间信息提取单
元用于将时间节点中的时间信息提取为网页发布时间。
第四种结构为:发布时间确定模块66可以包括第四时间节点查找
单元和第四时间信息提取单元;第四时间节点查找单元用于查找在网
页标题所在的标签对应的节点所属的父节点下是否有时间叶子节点,
如果有,第四时间信息提取单元用于将时间叶子节点中的时间信息提
取为网页发布时间;第四时间节点查找单元还用于在网页标题所在的
标签对应的节点所属的父节点下没有时间叶子节点时,查找在网页标
题所在的标签对应的节点所属的父节点下是否有时间所在的标签,如
果有,第四时间信息提取单元用于从时间所在的标签中提取时间信息
并作为网页发布时间;第四时间节点查找单元还用于在网页标题所在
的标签对应的节点所属的父节点没有时间所在的标签时,确定网页标
题节点的父节点的次左子节点,并查找次左子节点的若干子树下的左
子树节点是否有时间节点,如果有,第四时间信息提取单元用于将时
间节点中的时间信息提取为网页发布时间。
第五种结构为:发布时间确定模块66可以包括第五时间节点查找
单元、位置关系判断单元和第五时间信息提取单元;第五时间节点查
找单元用于在DOM树中查找时间节点;位置关系判断单元用于判断
查找到的时间节点与网页标题节点是否符合网页发布时间节点与网页
标题节点在DOM树中的相对位置关系;第五时间信息提取单元用于
将符合条件的时间节点确定为网页发布时间节点,并从网页发布时间
节点中提取网页发布时间。
此外,第五时间信息提取单元可以用于当符合条件的时间节点有
多个时,将离DOM树的根节点近的符合条件的时间节点确定为网页
发布时间节点。
标题节点确定模块64可以用于根据网页标题所在的标签类型、唯
一编码属性或者类属性在DOM树中确定网页标题节点。
此外,根据本发明的方法还可以实现为一种计算机程序产品,该
计算机程序产品包括计算机可读介质,在该计算机可读介质上存储有
用于执行本发明的方法中限定的上述功能的计算机程序。本领域技术
人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模
块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组
合。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本
发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包
含在本发明的保护范围之内。