用于从网站中提取信息的方法和装置
技术领域
本申请涉及数据处理,尤其涉及一种用于从网站中提取信息的方法和装置。
背景技术
随着计算机技术以及数据通信技术的发展,互联网上数据量越来越庞大,一个站点可以包括诸如文字、图片、音频、视频等等各种各样的数据。通常,一个站点中的核心数据通常被诸多不太重要的信息(例如,广告等)所包围。另外,基于某种原因,某些站点的提供者还会在站点中的web页面中加入干扰信息(如干扰节点、大量广告时),这些干扰信息的引入也增加了从网站中提取信息的难度。在此环境下,直接从站点上爬取的数据对于实际分析而言干扰信息过多,很难从中获得有效的、价值较高的信息。
因而,如何从网站中获得有价值的核心数据、并且排除各种无关的干扰信息,成为目前的一个研究热点。
发明内容
期望提供一种能够自动地从网站中获取核心数据的技术方案,期望该技术方案在不需要额外人工干预的情况下适用于目前互联网中的各种网站,期望该技术方案可以通过比较网站中各个web页面的内容来过滤掉各种重复信息(例如,频繁出现的广告),进而提取出web页面中的核心信息。
在本申请的一个实施方式中,提供了一种用于从网站中提取信息的方法,包括:从网站中获取位于相同深度的URL链接的集合;分析集合中的链接指向的多个web页面的代码,以获取针对多个web页面中每一个web页面的标签树;将针对集合中的链接指向的多个web页面的标签树进行重叠以构造网格树;以及基于归类规则将网格树中的网格节点中的标签节点进行归类,以从网格树中提取数据。
在本申请的一个实施方式中,其中分析集合中的链接指向的多个web页面的代码,以获取针对多个web页面中每一个web页面的标签树包括:针对多个web页面中的每一个,获取web页面中的至少一个tag标签作为标签树的节点;以及基于至少一个tag标签中的一个tag标签与其他tag标签的父子关系构建标签树。
在本申请的一个实施方式中,其中基于归类规则将网格树中的网格节点中的标签节点进行归类,以从网格树中提取数据包括:按照自顶向下自左向右的顺序,按照归类规则将网格树中的一网格节点中的多个标签节点归类为至少一个组合;将至少一个组合中的标签节点个数分布满足预定阈值的网格节点作为核心节点;以及从核心节点的父节点中提取数据。
在本申请的一个实施方式中,一种用于从网站中提取信息的装置,包括:获取模块,配置用于从网站中获取位于相同深度的URL链接的集合;分析模块,配置用于分析集合中的链接指向的多个web页面的代码,以获取针对多个web页面中每一个web页面的标签树;构造模块,配置用于将针对集合中的链接指向的多个web页面的标签树进行重叠以构造网格树;以及提取模块,配置用于基于归类规则将网格树中的网格节点中的标签节点进行归类,以从网格树中提取数据。
在本申请的一个实施方式中,其中分析模块包括:针对多个web页面中的每一个,标签获取模块,配置用于获取web页面中的至少一个tag标签作为标签树的节点;以及标签树构建模块,配置用于基于至少一个tag标签中的一个tag标签与其他tag标签的父子关系构建标签树。
在本申请的一个实施方式中,其中提取模块包括:归类模块,配置用于按照自顶向下自左向右的顺序,按照归类规则将网格树中的一网格节点中的多个标签节点归类为至少一个组合;选择模块,配置用于将至少一个组合中的标签节点个数分布满足预定阈值的网格节点作为核心节点;以及数据提取模块,配置用于从核心节点的父节点中提取数据。
根据本申请各个实施方式的技术方案,提供了一种以自动方式从网站中提取信息的技术方案。在本申请的技术方案中,可以基于寻找相同深度的web页面中的tag标签的相似性,来定位web页面中的核心区域,继而提取web页面中的核心内容。进一步,还可以针对相同深度的web页面中的内容进行归类和筛选,进而获得核心内容。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施方式及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1示意性示出了在网站中的某web页面的界面100的图示。
图2示意性示出了根据本申请一个实施方式的用于从网站中提取信息的方法的流程图;
图3A-图3C是根据本申请一个实施方式的基于网站中的链接建立的URL树的过程示意图;
图4A-图4C分别示意性示出了根据本申请一个实施方式的网站中的web页面的代码的示例;
图5A-图5C分别示意性示出了根据本申请一个实施方式的、从图4A-图4C所示的web页面代码中提取的标签树的示意图;
图6A-图6D分别示意性示出了根据本申请一个实施方式的生成网格树的各个阶段的示意图;
图7示意性示出了根据本申请一个实施方式的、基于图4A-图4C中的web页面生成的网格树的示意图;以及
图8示意性示出了根据本申请一个实施方式的用于从网站中提取信息的装置的框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。
所属技术领域的技术人员知道,本申请可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施方式中,本申请还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图显示了根据本申请的多个实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
为了方便下文描述,首先介绍本申请的各个实施方式中所涉及的术语的解释。
树:在从网站中提取信息时所构造的树形数据结构,包括URL树、标签树和网格树,在下文中将结合附图具体描述。
节点:上文所述的树形结构中的节点。
深度:树形结构中的从根节点开始的深度,例如根节点深度为1,其他子节点的深度依次递增。
重叠:对两棵树进行重叠以形成新的树形结构的过程。具体地,可以将树A和树B中位置相对应的节点进行重叠,其中位置可以是该节点相对于根节点的拓扑关系。例如,某节点是根节点的第三个子节点(例如按照自左向右的顺序)的第二个子节点,则例如可以将该节点的位置描述为<1-3-2>;某节点是根节点的第一个子节点的第一个子节点,则例如可以将该节点的位置描述为<1-1-1>。本领域还可以采用其他方式来定义节点的位置。
应当注意,在本申请的上下文中,当将树A和树B中位置相对应的节点NodeA和NodeB进行重叠时,如果节点NodeA和NodeB的内容相同,则可以将两个节点以相同内容表示(例如,以NodeA或NodeB的内容表示);如果节点NodeA和NodeB的内容不同时,则可以将两个节点NodeA和NodeB作为例如节点NodeA的父节点的子节点,或者将重叠后的节点的内容表示为集合{NodeA,NodeB}。
图1示意性示出了在网站中的某web页面的界面100的图示。在此示出的页面是在用户点击某条新闻后弹出的页面,例如,该页面100可以包括:网站导航部分110,用于示出网站所包括的多个频道,例如,新闻、财经等;搜索部分120,用于向用户提供在该网站内进行搜索的入口;广告部分130,用于提供文字、图像或者flash等形式的广告内容;标题部分140和正文部分150,分别用于示出新闻的标题和正文;该页面还可以包括例如新闻排行榜部分160和视频部分170等等其他部分。应当注意,在图1中仅仅示意性示出了网站中的一个页面的图示,在实际网络环境中,web页面中还可以包括其他更多的内容。
对于以从网站中提取核心数据的人员而言,在图1所示的页面中仅有标题部分140和正文部分150中包括有效数据,而并不关心其他部分中的文字、图片或者视频内容。应当注意,在一个站点同一深度上的信息通常具有相似性,其信息结构往往比较相似和固定,通过分析可以从web页面中找到包括核心数据的区域。例如,对于呈现新闻的具体内容页面而言,这些页面中各项数据的布局大致类似于图1所示,因而可以通过比较呈现新闻的具体内容的这一层级的页面中的各个页面,例如通过寻找内容不同的区域而快速准确地定位核心数据的位置(例如,由于网站导航部分110、搜索部分120等的内容通常是相同的,因而可以很快找到内容不同的区域,如标题部分140和正文部分150)。
应当注意,对于利用HTML编写的web页面而言,对于一个网站的同一深度上的web页面通常具有相似的结构。例如对于如图1所示的深度的两个新闻web页面的HTML而言,它们的大部分内容是相同或者相似的,并且可能仅在针对标题140和正文150这两个部分的HTML代码中存在较大的区别。
目前,已经提出了基于网站中web页面的相似性来提取核心数据的技术方案,然而这些技术方案主要涉及,基于网站结构将web页面的HTML代码进行人工获取、分析和归纳(例如,基于HTML中的tag标签进行),以获得可能的核心区域,继而将核心区域中的数据进行筛选和分析以便获取核心数据。
尽管这种技术方案可以在一定程度上提高提取核心数据的效率,然而该方法显著依赖于对于web页面的HTML代码的人工分析,并且还依赖于用于分析的样本web页面的选取;此外,当已经对某网站中进行人工分析并且以及定义了核心区域之后,如果该网站的提供者更新了网站中web页面的设计,则不得不对更新后的web页面再次进行分析以便获得新的核心区域;否则,在提取核心内容时可能会产生重大错误。
针对现有技术中的诸多缺陷,本申请的各个实施方式提供了一种以自动方式从网站中提取信息的技术方案。在本申请的技术方案中,基于寻找相同深度的web页面中的相似性来提取web页面中的核心内容。具体地,可以针对相同深度的web页面中的内容进行归类和筛选,进而获得核心内容。为使本申请的目的、技术方案和优点更加清楚,以下结合附图及具体实施方式,对本申请作进一步地详细说明。
采用本申请的技术方案,不需要人工获取和分析网页中的哪个或者哪些区域是核心区域,而是可以通过自动过程来完成。另外,即使当站点提供者出于某种原因对核心区域增加干扰节点、或者修改核心区域的代码时,也无需投入额外的人力、物力和时间进行适应性调整。
在本申请的一个实施方式中,提供了一种用于从网站中提取信息的方法,包括:从网站中获取位于相同深度的URL链接的集合;分析集合中的链接指向的多个web页面的代码,以获取针对多个web页面中每一个web页面的标签树;将针对集合中的链接指向的多个web页面的标签树进行重叠以构造网格树;基于归类规则将网格树中的网格节点中的标签节点进行归类,以从网格树中提取数据。
具体地,图2示意性示出了根据本申请一个实施方式的用于从网站中提取信息的方法的流程图200。首先,在步骤S202中,从网站中获取位于相同深度的URL链接的集合。在此实施方式中,获取在网站中位于相同深度的URL的链接的集合的目的在于,可以针对该集合内的各个URL所指向的web页面进行分析。例如,对于在图1中示出的一个web页面的界面的示意图,假设该web页面是某网站主页下的路径为“主页”->“新闻”->“国内新闻”的新闻1的web页面;通常,上述路径下的另一新闻2的web页面也类似于图1所示。因而,可以针对在网站中位于相同深度的URL链接所指向的web页面进行分析,以便寻找其中的相似性进而提取网站中的核心数据(例如新闻1和新闻2的web页面中的标题部分140和正文部分150)。
在步骤S204中,分析集合中的链接指向的多个web页面的代码,以获取针对多个web页面中每一个web页面的标签树。在本申请的实施方式中,获取标签树的目的在于获取web页面中各项内容的层次关系。通常,现有的web页面可以采用HTML编写,并且HTML中的各种标签(tag)具有明确的层次关系。在此实施方式中,可以基于HTML中的tag标签的层次关系来构建标签树。在后续操作中,可以利用针对同一深度的URL的web页面的标签树来进行比较,以便识别在那些标签下的数据属于核心数据。
在步骤S206中,将针对集合中的链接指向的多个web页面的标签树进行重叠以构造网格树。构造网格树的目的在于,提取相同深度的web页面中各项内容的相似性。通过将针对多个web页面的标签树进行重叠,在生成的网格树的每个网格节点中的标签的内容都具有潜在的相似性。例如对于上文所示的具有如图1所示web页面的新闻1和新闻2的web页面的示例,在生成的网格树的一个网格节点中,可以分别包括新闻1和新闻2的正文部分150。
在步骤S208中,基于归类规则将网格树中的网格节点中的标签节点进行归类,以从网格树中提取数据。可以采用不同的方式对网格树中的网格节点中的多个标签进行归类。应当注意,当归类规则不同时,由归类产生的组合的数量以及每个组合中所包括的标签节点的数量可以有所不同。可以基于产生的组合的数量以及每个组合中所包括的标签节点的数量,来选择最适合的归类规则,并且还可以从中分析得出哪个网格节点中的数据属于核心数据。
在本申请的一个实施方式中,从网站中获取位于相同深度的URL链接的集合包括:提取网站中包括的URL链接的原始集合;基于原始集合中的URL链接建立URL树;以及选取URL树中位于相同深度的叶节点以形成集合。
在本申请的一个实施方式中,可以通过爬取与网站主页相关联的URL链接的方式获取原始集合。例如,对于URL地址为www.site***.com的网站,可以首先获取该网站主页中的全部链接的URL(即,深度为1的URL)的集合Set_1;继而,获取该集合Set_1中的全部URL所指向web页面中的全部链接的URL(即,深度为2的URL)的集合Set_2;以此类推。可以设置所爬取的URL的深度,例如,设置深度为5或者其他数值。这样可以提取网站中包括的URL链接的原始集合。
接着,可以针对原始集合中的URL链接建立URL树。在此建立URL树的目的在于对原始集合中的URL链接的深度进行分级,以便获取具有相同深度的URL。继而,通过选取URL树中位于相同深度的叶节点以形成相同深度的URL链接的集合。
通常而言,不同深度的URL可以以字符“/”来分隔。例如,上文所示网站的深度为1的URL可以是“www.site***.com”,而该网站的“新闻”频道的URL是“www.site***.com/news”。因而,基于网站设计中对于URL命名的这一规律,可以分析与网站中的全部URL的深度。
在本申请的一个实施方式中,基于原始集合中的URL链接建立URL树包括:针对原始集合中的第一URL链接和第二URL链接,分别将第一URL链接和第二URL链接以“/”进行拆分;将拆分所得的第一URL链接和第二URL链接的每个部分作为一节点,以分别构造第一URL子树和第二URL子树;以及将第二URL子树重叠至第一URL子树以形成URL树。
具体地,针对原始集合中的每个URL链接,可以将该URL链接以“/”进行拆分,并将拆分后所得的部分作为节点来构造针对每个URL的URL子树;继而,将这些URL子树逐一进行重叠以获取最终的URL树。现在详细描述针对一个URL链接构建URL子树的过程。例如,存在如下3个URL(为简化描述起见,将网站主页的URL“www.site***.com”缩写为“r1”):
URL1:r1/xxx/yyy?k=v1;
URL2:r1/xxx/yyy?k=v2;以及
URL3:r1/xxy/yyx?k=v1。
则URL1的3个节点可以分别是:r1、xxx和yyy?k=v1;URL2的3个节点可以分别是:r1、xxx和yyy?k=v2;以及URL2的3个节点可以分别是:r1、xxy和yyx?k=v1。图3A-图3C是根据本申请一个实施方式的基于网站中的链接建立的URL树的过程示意图300A-300C。其中,URL子树1302A、URL子树2304A和URL子树3306B分别示出了针对URL1、URL2、URL3的URL子树。
在本申请的一个实施方式中,将第二URL子树重叠至第一URL子树以建立URL树包括:响应于第二URL子树与第一URL子树的相对应位置的节点的定义相同,将第二URL子树的节点重叠至第一URL子树的节点,其中位置表示节点与根节点的拓扑关系。
具体地,参见图3A-图3C说明如何进行重叠。如图3A所示,左侧示出了针对URL1的URL子树1302A,右侧示出了针对URL2的URL子树2304A。由于两个子树的根节点的位置相对应并且定义相同(内容均为r1),则可以将两个子树的根节点进行重叠(在根节点r1中的括号中的数字“2”表示,该节点是将2个内容为r1的节点进行重叠后的节点)。另外,由于两个子树的根节点的子节点的位置相对应并且定义相同(内容均为xxx),则可以将两个子树的根节点的子节点进行重叠(在节点xxx中的括号中的数字“2”表示,该节点是将2个内容为xxx的节点进行重叠后的节点)。
由于两个子树的深度为3的节点的定义不同(内容分别为yyy?k=v1和yyy?k=v2),则将这两个节点分别作为重叠后的深度为2的节点的子节点。当将URL子树1302A和URL子树2304A进行重叠后,可以获得如图3B左侧所示的重叠后子树304B。继而,再次采用上文所述的将URL子树1302A与URL子树2304A进行重叠的算法,来将重叠后子树304B与URL子树3306B进行重叠,可以获得如图3C所示的URL树300C。
在图3C所示的URL树300C中,选取所述URL树中位于相同深度的叶节点以形成所述集合。具体地,例如,可以使用深度为3的层次的3个叶节点来作为在网站中位于相同深度的URL的链接。URL的内容为将从根节点开始到满足要求的叶节点的路径沿线的全部节点的内容以“/”进行串联后形成的字符串。例如,最左侧的叶节点所对应的URL链接可以是“r1/xxx/yyy?k=v1”。
在实现中,本领域技术人员可以自行设计数据结构来保存与URL节点和URL链接相关联的数据。例如,可以采用如表1所示的数据结构来保存与URL节点相关联的数据,可以采用如表2所示的数据来保存与URL链接相关联的数据。
表1URL节点的数据结构示例
表2URL的数据结构示例
在本申请的一个实施方式中,分析集合中的链接指向的多个web页面的代码,以获取针对多个web页面中每一个web页面的标签树包括:针对多个web页面中的每一个,获取web页面中的至少一个tag标签作为标签树的节点;以及基于至少一个tag标签中的一个tag标签与其他tag标签的父子关系构建标签树。
具体地,参见图4A-图4C以及图5A-图5C来详细说明如何构建标签树。假设存在如下3个URL链接:
URL4:http://www.site***.com/xxxx/city/1.html;
URL5:http://www.site***.com/xxxx/city/2.html;以及
URL6:http://www.site***.com/xxxx/city/3.html。
图4A-图4C分别示意性示出了根据本申请一个实施方式的网站中的web页面的代码的示例400A-400C;以及图5A-图5C分别示意性示出了根据本申请一个实施方式的、从图4A-图4C所示的web页面代码中提取的标签树的示意图500A-500C。在下文中,仅示出如何针对URL4所指向的web页面提取标签树,本领域技术人员可以基于所示原理自行构造针对URL5和URL6的web页面的标签树。
对于如图4A中所示的代码400A,基于HTML的编码方式可知,该web页面包括如下tag标签:<html>、<body>、<div>、<p>以及<pclass=“city_name”>(应当注意,在代码400A中以省略号表示还可能存在其他tag标签)。
首先,获取web页面中的至少一个tag标签作为标签树的节点。因而可以构造如图5A中所示的标签树中的各个节点,如,<html>、<body>、<div>、<p>以及<p class=“city_name”>(应当注意,标签树5A中以省略号表示的节点对应于图4A中以省略号所示的代码)。接着,基于至少一个tag标签中的一个tag标签与其他tag标签的父子关系构建标签树。基于HTML的原理可知,<body>标签嵌入在<html>标签内部,因而可以将图5A所示的<body>节点作为<html>节点的子节点;类似地,本领域技术人员可以将<div>节点作为<body>的子节点,等等。最终构建如图5A-图5C所示的标签树。
在本申请的一个实施方式中,将针对集合中的链接指向的多个web页面的标签树进行重叠以构造网格树包括:将针对第一web页面的第一标签树作为基础网格树;以及将针对第二web页面的第二标签树重叠至基础网格树。
在下文中,将参见图6A-图6D说明生成网格树的原理。图6A-图6D分别示意性示出了根据本申请一个实施方式的生成网格树的各个阶段的示意图600A-600D。首先,说明在初始时如何构建网格树。具体地,可以选取在上文中参见图5A-图5C所示的方法生成的多个标签树中的一个标签树,来作为构建网格树的基础,即将其作为基础网格树。应当注意,在图6A-图6D中,以圆形表示标签树的标签节点,以矩形表示网格树中的网格节点。例如,图6A示出了包括标签节点1-4的标签树600A。可以将该标签树600A中的各个节点(例如,标签节点1-4)作为基础网格树(如图6B中左侧所示)中的网格节点1-4。
在本申请的一个实施方式中,将针对第二web页面的第二标签树重叠至基础网格树包括:从第二标签树的根节点遍历第二标签树;在遍历期间针对第二标签树的每个节点,将节点重叠至基础网格树中与节点的位置相对应的网格节点。
可以采用自顶向下、自左向右的顺序,从根节点开始来遍历有待被重叠至基础网络树的第二标签树,继而,将第二标签树中的每个节点逐一重叠至基础标签树中的与该节点的位置相对应的网格节点。在此实施方式中,节点的位置的含义与上文中所示的含义相同,表示节点与根节点的拓扑关系。现在参见图6B-图6D示出重叠的具体步骤。
图6B左侧示出了当前的基础网格树,而右侧示出了包括标签节点5-9的第二标签树。当自顶向下、自左向右地遍历第二标签树时,首先处理根节点(以圆形表示的节点5),该节点的位置对应于基础网格树的根节点(以矩形表示的节点1),此时将节点5重叠至节点1,即,将节点5加入节点1所在的网格以获得新的根节点(此时网格树的根节点网格包括标签节点1和5)。类似地,将第二标签树中深度为2的第一个节点(节点6)重叠至网格树的相应位置,获得包括标签节点2和6的网格节点;采用类似方式,可以获得如图6C中左侧所示的网格树。在下一次重叠中,可以将如图6C左侧所示的网格树作为当前的基础网格树。
继而,将其余的每个标签树重叠至当前的基础网格树,例如,将图6C右侧所示的标签树重叠至当前的基础网格树,可以形成如图6D所示的最终的网格树600D。应当注意,网格树中可以包括多个网格节点,并且在每个网格节点中可以包括至少一个标签节点。例如,在网格树600D中包括5个网格节点,其中根节点包括3个标签节点,分别为节点1、节点5和节点10;又例如,网格树600D的右下角的叶节点仅包括一个标签节点,即,节点9。
在本申请的一个实施方式中,本领域技术人员可以自行设计用于保存与标签节点、标签、以及网格节点相关联的数据的数据结构。例如,在下文的表3-表5中分别示意性示出了用于存储与标签节点、标签、以及网格节点相关联的数据的数据结构的示例。
表3标签节点的数据结构示例
字段名称 |
关键字段/模型字段 |
描述 |
节点定义 |
模型 |
用来唯一描述该节点 |
是否为叶子节点 |
关键 |
Y/N |
是否为根节点 |
关键 |
Y/N |
子节点 |
模型 |
节点集合(无排序规则) |
父节点 |
模型 |
该节点所属的父亲节点 |
个数 |
关键 |
|
表4标签的数据结构示例
表5网格节点的数据结构示例
字段名称 |
关键字段/模型字段 |
描述 |
网格位置 |
模型 |
唯一定位一个网格 |
节点集合 |
模型 |
该网格内的所有节点 |
子网格 |
模型 |
网格的集合 |
父网格 |
模型 |
指向父亲网格抽象节点 |
图7示意性示出了根据本申请一个实施方式的、基于图4A-图4C中的web页面生成的网格树的示意图700。本领域技术人员可以按照参见图6A-6D所示的生成网格树的原理,来自行构造出如图7所示的网格树700。在生成的网格树700中包括多个网格节点:例如,根节点处的网格包括3个标签节点,并且每个标签节点的内容相同均为<html>;又例如,图7中部所示的深度为4的网格节点包括3个标签节点,并且3个标签节点中有两个标签节点内容相同均为<p class=“city_name”>、另外一个标签节点内容为<span>。
在本申请的一个实施方式中,基于归类规则将网格树中的网格节点中的标签节点进行归类,以从网格树中提取数据包括:按照自顶向下自左向右的顺序,按照归类规则将网格树中的一网格节点中的多个标签节点归类为至少一个组合;将至少一个组合中的标签节点个数分布满足预定阈值的网格节点作为核心节点;以及从核心节点的父节点中提取数据。
在下文中,结合图7所示的网格树中的网格节点来具体说明如何基于归类规则将网格树中的网格节点中的标签节点进行归类,以从网格树中提取数据。
由于每个网格中可以包括至少一个标签节点,因而在进行归类时可以将这些标签节点归类为至少一个组合,如果每个网格中包括的标签节点属于相同的组合,则认为该网格中的标签节点所关联的网页内容在该层次的web页面中的相似性较高(例如,在参见上文图1所示的新闻1和新闻2的web页面的示例中,针对两个web页面的广告部分130的内容是相似的)。
如果每个网格中包括的标签节点被归类为不同的组合,则需要比较每个组合中的标签节点的数量的关系。如果不同组合中的标签节点个数分布满足预定阈值的网格节点作为核心节点;以及从核心节点的父节点中提取数据。
可以基于如下方式来定义阈值,例如,一个网格节点中的标签节点个数为N,并且假设按照某归类规则对该网格节点中的N个标签节点进行归类时产生M个组合,则可以将阈值定义为N/M。或者还可以为该阈值N/M设置上下浮动范围,以便当某网格节点中的不同组合中的标签节点个数分布大致满足预定阈值时,则将该网格节点作为核心节点。此时的核心节点表示,在该网格节点中的标签节点中所包含的数据很可能是网站中的核心数据。因而,从核心节点的父节点中提取数据可以获得该网站的核心数据。
具体地,自顶向下、自左向右地逐一处理网格树700中的每个网格节点。首先处理深度为1的根节点(即,网格节点710,该节点710包括3个标签节点,并且每个标签节点的内容相同均为<html>)。可以使用不同的归类规则,为简单起见而在此基于标签名称进行归类,具体地,该归类规则将标签名称相同的标签节点归类至为相同的组合。在下文中将详述其他归类规则的含义,以及如何基于其他规则进行归类。对于根节点710,由于3个标签节点内容相同,因而3个标签节点被归类为一个组合,不会出现上文所述的核心节点的条件,因而继续处理根节点的子节点。
继而,处理根节点710的子节点(深度为2的网格节点720),该节点包括3个标签节点,并且每个标签节点的内容相同均为<body>。类似地,该节点也不是核心节点,因而继续处理该节点720的子节点730。深度为3的节点730的情况类似于根节点710,继续处理其深度为4的子节点。
存在3个深度为4的网格节点,第一个网格节点741包括3个内容相同(均为<p>)的标签节点,因而继续处理第二个网格节点742。第二个网格节点742中分别包括标签<pclass=“city_name”>和<span>,这两种标签被归类为两个不同的组合。标签<p class=“city_name”>的组合中标签的数目为2,而标签<span>的组合中标签的数目为1。在此为排除干扰节点的目的,可以剔除标签<span>。
继而,选取深度为4的网格节点741的子节点751进行分析,该节点751的情况类似于根节点710,因而选取深度为4的网格节点742的子节点752进行分析。该节点752包括标签“北京”、“上海”,这两者被归类为两个不同的组合中。并且根据上文所述的核心节点的判断标准,该网格节点752中的标签节点个数为N=2,并且假设按照标签名称这一规则对该网格节点752中的2个标签节点进行归类时产生2个组合,此时的阈值定义为N/M=2/2=1。由于每个组合中的标签节点的个数均为1,因而网格节点752满足核心节点的条件。可以从核心节点752的父节点742中提取核心数据,即,该web页面展示的城市数据中的城市名称。
在本申请的一个实施方式中,按照归类规则将网格树中的一网格节点中的多个标签节点归类为至少一个组合包括:剔除至少一个组合中的其中包含的标签节点个数小于第二阈值的组合。例如,在上文的网格节点742中,可以剔除<span>所在的组合,以便不考虑网站提供者插入的干扰信息。应当注意,在此的“剔除”并非从网格树中物理地删除<span>,而是可以仅仅将该标签进行特殊标记。应当注意,由于已经从网格节点742中剔除了<span>标签,因而在网格节点742的子节点752的网格中可以仅包括“北京”和“杭州”。
在本申请的一个实施方式中,归类规则包括将以下至少任一内容相同的两个标签节点归类为相同组合:标签名称、属性、父节点标签名称、父节点属性。在上文中仅详细描述了当标签名称相同时可以将两个标签归类至相同组合的示例,在实现中还可以基于其他归类规则。例如,可以在标签的属性(例如,p class=“city_name”)相同时将两个标签归类之相同的组合;或者还可以考虑父节点标签名称和/或父节点属性。并且,还可以在如下任一内容相同、或者如下任意内容的组合相同时,将标签节点进行归类:标签名称、属性、父节点标签名称、父节点属性进行组合。例如,可以在(标签名称,父节点标签名称)这两者均相同时,才进行归类。
图8示意性示出了根据本申请一个实施方式的用于从网站中提取信息的装置的框图800。具体地,提供了一种用于从网站中提取信息的装置,包括:获取模块810,配置用于从网站中获取位于相同深度的URL链接的集合;分析模块820,配置用于分析集合中的链接指向的多个web页面的代码,以获取针对多个web页面中每一个web页面的标签树;构造模块830,配置用于将针对集合中的链接指向的多个web页面的标签树进行重叠以构造网格树;以及提取模块840,配置用于基于归类规则将网格树中的网格节点中的标签节点进行归类,以从网格树中提取数据。
在本申请的一个实施方式中,获取模块810包括:URL提取模块,配置用于提取网站中包括的URL链接的原始集合;建立模块,配置用于基于原始集合中的URL链接建立URL树;以及形成模块,配置用于选取URL树中位于相同深度的叶节点以形成集合。
在本申请的一个实施方式中,建立模块包括:子树构造模块,配置用于针对原始集合中的第一URL链接和第二URL链接,分别将第一URL链接和第二URL链接以“/”进行拆分;将拆分所得的第一URL链接和第二URL链接的每个部分作为一节点,以分别构造第一URL子树和第二URL子树;以及URL树形成模块,配置用于将第二URL子树重叠至第一URL子树以形成URL树。
在本申请的一个实施方式中,URL树形成模块包括:重叠模块,配置用于响应于第二URL子树与第一URL子树的相对应位置的节点的定义相同,将第二URL子树的节点重叠至第一URL子树的节点,其中位置包括节点的深度以及节点在深度中的序号。
在本申请的一个实施方式中,分析模块820包括:针对多个web页面中的每一个,标签获取模块,配置用于获取web页面中的至少一个tag标签作为标签树的节点;以及标签树构建模块,配置用于基于至少一个tag标签中的一个tag标签与其他tag标签的父子关系构建标签树。
在本申请的一个实施方式中,构造模块830包括:第一构造模块,配置用于将针对第一web页面的第一标签树作为基础网格树;以及第二构造模块,配置用于将针对第二web页面的第二标签树重叠至基础网格树。
在本申请的一个实施方式中,第二构造模块包括:遍历模块,配置用于从第二标签树的根节点遍历第二标签树;第三构造模块,配置用于在遍历期间针对所述第二标签树的每个节点,将节点重叠至基础网格树中与节点的位置相对应的网格节点。
在本申请的一个实施方式中,提取模块840包括:归类模块,配置用于按照自顶向下自左向右的顺序,按照归类规则将网格树中的一网格节点中的多个标签节点归类为至少一个组合;选择模块,配置用于将至少一个组合中的标签节点个数分布满足预定阈值的网格节点作为核心节点;以及数据提取模块,配置用于从核心节点的父节点中提取数据。
在本申请的一个实施方式中,归类模块包括:剔除模块,配置用于剔除至少一个组合中的其中包含的标签节点个数小于第二阈值的组合。
在本申请的一个实施方式中,归类规则包括将以下至少任一内容相同的两个标签节点归类为相同组合:标签名称、属性、父节点标签名称、父节点属性。
在上文中仅参见图7所示的网格树示出了一个简单的示例,本领域技术人员可以基于上文中所公开的技术方案的原理来处理更加复杂的境况。例如,可以将更加复杂的情况划分成多个简单的模块进行分析。采用本申请所述的方法和装置,可以排除网站中的潜在干扰信息并有效地获取核心数据。本领域技术人员可以将所获取的核心数据用来做后续的应用,例如,进行数据分析等。
本领域内的技术人员应明白,本申请的实施方式可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施方式、完全软件实施方式、或结合软件和硬件方面的实施方式的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施方式而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。