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