技术领域
[0001] 本
发明涉及互联网领域,具体而言,涉及一种栏目信息提取方法和装置。
背景技术
[0002] 在通过
网络爬虫获取
网站数据的过程中,一般的爬虫都会记录每次爬取的页面,在一定时间内遇到重复页面将不再进行爬取。这样设计主要是因为在短时间内重复的爬取同一个页面是没有必要的,而且会极大的消耗爬虫资源和网络通信资源。但这样的设计在一定程度上会导致无法爬取到全站的数据。
[0003] 图1是一个网站结构示意图,如图1所示,假设现在爬取三层,在爬取到首页(第一层)后解析出新闻和财经两个栏目地址,在爬取新闻栏目(第二层)后解析出文章一和文章二两个地址,同时解析出了一个财经栏目地址(因为一般网页都会将栏目地址在每个页面的首部常驻),在爬取两个文章及一个财经栏目页面后(第三层),左边这部分结构爬取完成,此时首页、新闻栏目页、文章一、文章二以及财经栏目页都会被记录为已经爬取过,那么当开始爬取右边的结构时,原本财经应该是作为第二层进行爬取的,理论上来讲财经下面的文章三应该被爬取到(因为与左边部分的文章一和二一样同属于第三层),但实际上财经已经在爬取左边部分时作为第三层爬取过了,此时遇到财经页面检查发现已经爬取过,因此不会再爬取这个页面,所以事实上文章三就在本次爬取中没有爬到。如果希望爬取到网站的所有页面,仅仅使用首页作为爬虫入口是不够的,一个可行的方案是将首页及网站的所有栏目页都作为爬虫入口,这样至少能保证每个栏目页下面的文章都能被正常爬取到。
[0004] 一般来说,爬虫都是对
指定的网站进行爬取,所以首页的地址是容易获取到的。而获取所有栏目页地址可以通过解析首页源码,提取出源码中的栏目信息,从而获取所有的栏目页地址。现有的解决方案是通过人工检查的方式提取网站的栏目页地址,而人工检查带来的直接问题是效率低下,特别是当栏目较多时,人工检查会耗费极大的时间。
[0005] 针对上述的问题,目前尚未提出有效的解决方案。
发明内容
[0006] 本发明
实施例提供了一种栏目信息提取方法和装置,以至少解决由于无法自动获取栏目信息造成的获取栏目信息的效率低下的技术问题。
[0007] 根据本发明实施例的一个方面,提供了一种栏目信息提取方法,包括:获取栏目名称统计表,其中,所述栏目名称统计表包括栏目名称和所述栏目名称的出现次数;从目标网页中解析出至少一个第一链接名称;将所述第一链接名称与所述栏目名称统计表中记录的所述栏目名称进行匹配;按照匹配的栏目名称对应的所述出现次数确定一个或者多个所述第一链接名称作为从所述目标网页提取出来的栏目信息。
[0008] 进一步地,获取栏目名称统计表包括:爬取多个网站的首页源码;从所述多个网站的所述首页源码中解析出至少一个第二链接名称;对所述至少一个第二链接名称中长度小于或者等于预设长度的第二链接名称出现的第一次数进行统计;根据所述长度小于或者等于预设长度的第二链接名称和所述第一次数生成所述栏目名称统计表,其中,所述长度小于或者等于预设长度的第二链接名称作为所述栏目名称,所述第一次数作为所述栏目名称的所述出现次数。
[0009] 进一步地,将所述第一链接名称与所述栏目名称统计表中记录的所述栏目名称进行匹配包括:在所述栏目名称统计表中查找与所述第一链接名称相同或者包含所述第一链接名称的所述栏目名称。
[0010] 进一步地,按照匹配的栏目名称对应的所述出现次数确定一个或者多个所述第一链接名称作为从所述目标网页提取出来的栏目信息包括:根据所述栏目名称的出现次数对匹配的所述第一链接名称进行打分,其中,所述第一链接信息的得分与所述栏目名称的出现次数正相关;按照匹配的所述第一链接名称的分数提取出一个或者多个所述第一链接名称作为所述栏目信息。
[0011] 进一步地,在按照匹配的栏目名称对应的所述出现次数确定一个或者多个所述第一链接名称作为从所述目标网页提取出来的栏目信息之后,所述方法还包括:获取所述栏目信息所关联的第一链接地址,其中,所述第一链接地址与所述第一链接名称一一对应;将所述第一链接地址作为爬取网页内容的入口,并按照预设条件从所述入口开始爬取网页内容。
[0012] 根据本发明实施例的另一方面,还提供了一种栏目信息提取装置,包括:第一获取单元,用于获取栏目名称统计表,其中,所述栏目名称统计表包括栏目名称和所述栏目名称的出现次数;解析单元,用于从目标网页中解析出至少一个第一链接名称;匹配单元,用于将所述第一链接名称与所述栏目名称统计表中记录的所述栏目名称进行匹配;确定单元,用于按照匹配的栏目名称对应的所述出现次数确定一个或者多个所述第一链接名称作为从所述目标网页提取出来的栏目信息。
[0013] 进一步地,所述第一获取单元包括:爬取模
块,用于爬取多个网站的首页源码;解析模块,用于从所述多个网站的所述首页源码中解析出至少一个第二链接名称;统计模块,用于对所述至少一个第二链接名称中长度小于或者等于预设长度的第二链接名称出现的第一次数进行统计;生成模块,用于根据所述长度小于或者等于预设长度的第二链接名称和所述第一次数生成所述栏目名称统计表,其中,所述长度小于或者等于预设长度的第二链接名称作为所述栏目名称,所述第一次数作为所述栏目名称的所述出现次数。
[0014] 进一步地,所述匹配单元包括:查找模块,用于在所述栏目名称统计表中查找与所述第一链接名称相同或者包含所述第一链接名称的所述栏目名称。
[0015] 进一步地,所述确定单元包括:打分模块,用于根据所述栏目名称的出现次数对匹配的所述第一链接名称进行打分,其中,所述第一链接信息的得分与所述栏目名称的出现次数正相关;提取模块,用于按照匹配的所述第一链接名称的分数提取出一个或者多个所述第一链接名称作为所述栏目信息。
[0016] 进一步地,所述装置还包括:第二获取单元,用于在按照匹配的栏目名称对应的所述出现次数确定一个或者多个所述第一链接名称作为从所述目标网页提取出来的栏目信息之后,获取所述栏目信息所关联的第一链接地址,其中,所述第一链接地址与所述第一链接名称一一对应;入口单元,用于将所述第一链接地址作为爬取网页内容的入口,并按照预设条件从所述入口开始爬取网页内容。
[0017] 在本发明实施例中,采用获取栏目名称统计表,从目标网页中解析出链接名称,将链接名称与栏目名称统计表中记录的栏目名称进行匹配的方式,通过按照匹配的栏目名称对应的出现次数确定栏目信息,达到了获取所有栏目页地址的目的,从而实现了自动获取网站首页栏目页信息的技术效果,进而解决了由于无法自动获取栏目信息造成的获取栏目信息的效率低下的技术问题。
附图说明
[0018] 此处所说明的附图用来提供对本发明的进一步理解,构成本
申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0019] 图1是一个网站结构示意图;
[0020] 图2是根据本发明实施例的一种可选的栏目信息提取方法的
流程图;
[0021] 图3是根据本发明实施例的栏目名称统计表的示意图;
[0022] 图4是根据本发明实施例的获取到的目标网页的源码的示意图;
[0023] 图5是根据本发明实施例的从目标网页中解析得到的链接名称及其对应的链接信息的示意图;
[0024] 图6是根据本发明实施例的一种可选的栏目信息提取装置的示意图。
具体实施方式
[0025] 为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0026] 需要说明的是,本发明的
说明书和
权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何
变形,意图在于
覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0027] 根据本发明实施例,提供了一种栏目信息提取的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的
计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0028] 图1是根据本发明实施例的一种可选的栏目信息提取方法的流程图,如图1所示,该方法包括如下步骤:
[0029] 步骤S102,获取栏目名称统计表,其中,栏目名称统计表包括栏目名称和栏目名称的出现次数;
[0030] 步骤S104,从目标网页中解析出至少一个第一链接名称;
[0031] 步骤S106,将第一链接名称与栏目名称统计表中记录的栏目名称进行匹配;
[0032] 步骤S108,按照匹配的栏目名称对应的出现次数确定一个或者多个第一链接名称作为从目标网页提取出来的栏目信息。
[0033] 在本发明实施例中,采用获取栏目名称统计表,从目标网页中解析出链接名称,将链接名称与栏目名称统计表中记录的栏目名称进行匹配的方式,通过按照匹配的栏目名称对应的出现次数确定栏目信息,达到了获取所有栏目页地址的目的,从而实现了自动获取网站首页栏目页信息的技术效果,进而解决了由于无法自动获取栏目信息造成的获取栏目信息的效率低下的技术问题。
[0034] 可选地,获取栏目名称统计表包括:爬取多个网站的首页源码;从多个网站的首页源码中解析出至少一个第二链接名称;对至少一个第二链接名称中长度小于或者等于预设长度的第二链接名称出现的第一次数进行统计;根据长度小于或者等于预设长度的第二链接名称和第一次数生成栏目名称统计表,其中,长度小于或者等于预设长度的第二链接名称作为栏目名称,第一次数作为栏目名称的出现次数。
[0035] 网站首页的栏目页名称大都具有相似性,尤其是同一类型的网站,其首页的栏目页往往都使用相同或者相近的名称,如:政府网站往往使用“工作动态”、“办事指南”、“政策法规”等作为其栏目页名称;新闻网站则较多地使用“军事”、“娱乐”、“体育”、“财经”等作为栏目页名称。通过对某一类型的网站的统计就可以获取该类网站首页的栏目页的常用名称。以政府网站为例,爬取大量的政府网站的首页的内容,然后使用开源工具对网页的内容进行解析,将其中的链接信息的名称解析出来,这里面包含了栏目页名称和非栏目页名称。通过调研发现,政府网站首页所使用的栏目页名称,其长度通常都少于8个字符,按照名称的长度对解析出的链接名称进行筛选,将长度小于8个字符的链接名称筛选出来,对这些链接名称进行统计就得到了栏目名称统计表。图3是根据本发明实施例的栏目名称统计表的示意图,如图3所示,在该栏目名称统计表中,包含有链接名称以及链接名称出现的次数,其中,链接名称出现的次数越多,意味着该链接名称越有可能被作为政府类网站首页的栏目页名称。需要说明的是,获取栏目名称统计表的过程是一个
自学习及人工校正的过程,在爬取网站首页的内容时,爬取的网页应大于4000个,且数量越多越好。
[0036] 可选地,将第一链接名称与栏目名称统计表中记录的栏目名称进行匹配包括:在栏目名称统计表中查找与第一链接名称相同或者包含第一链接名称的栏目名称。
[0037] 图4是根据本发明实施例的获取到的目标网页的源码的示意图,如图4所示,通过程序模拟浏览器
请求的方式,可以获取到目标网页的源码,从该源码中,可以解析出链接名称,如“新闻”、“新闻发布”等。将目标网页中提取出来的链接名称与栏目名称统计表中的栏目名称进行匹配,就是在栏目名称统计表中查找与该链接名称一致,或者包含该链接名称的栏目名称,如:链接名称为“新闻”,能够与其匹配的栏目名称可以为“新闻”,“新闻动态”,“新闻公告”等,其中栏目名称与链接名称相同的匹配优先级要大于栏目名称包含链接名称的匹配优先级。由于栏目名称统计表中,链接名称出现的次数能够反映出该链接名称可能作为网站首页栏目名称的概率,因此通过将链接名称与栏目名称统计表中的栏目名称进行匹配,可以确定该链接名称作为网页栏目名称的概率的大小。
[0038] 可选地,按照匹配的栏目名称对应的出现次数确定一个或者多个第一链接名称作为从目标网页提取出来的栏目信息包括:根据栏目名称的出现次数对匹配的第一链接名称进行打分,其中,第一链接信息的得分与栏目名称的出现次数正相关;按照匹配的第一链接名称的分数提取出一个或者多个第一链接名称作为栏目信息。
[0039] 在将目标网页中解析出的链接名称与栏目名称统计表中的栏目名称进行匹配后,根据链接名称匹配的栏目名称的出现次数,可以确定链接名称作为网页栏目名称的概率大小,为了方便对概率大小的衡量和比较,可以采用打分的方式将该概率量化,即根据与链接名称相匹配的栏目名称统计表中的栏目名称的出现次数,对该链接名称进行打分,链接名称的得分与其匹配的栏目名称的出现次数正相关,即链接名称匹配的栏目名称的出现次数越多,其得分越高。最后,根据每一个从目标网页中解析出的链接名称的得分,将链接名称进行排序,并取得分靠前的链接名称作为目标网页的栏目名称。如,需要从目标网页中提取10个链接名称作为栏目名称,则取得分最高的前10个链接名称,作为目标网页的栏目名称。
[0040] 可选地,在按照匹配的栏目名称对应的出现次数确定一个或者多个第一链接名称作为从目标网页提取出来的栏目信息之后,方法还包括:获取栏目信息所关联的第一链接地址,其中,第一链接地址与第一链接名称一一对应;将第一链接地址作为爬取网页内容的入口,并按照预设条件从入口开始爬取网页内容。此处的预设条件可以为:从入口开始爬取N层,N为正整数,具体可根据实际需要设定N。
[0041] 图5是根据本发明实施例的从目标网页中解析得到的链接
[0042] 名称及其对应的链接信息的示意图,在解析到的目标网页的源码中,链接名称与链接地址是一一对应的,通过开源的解析工具,能够从目标网页源码中解析得到链接名称及其对应的链接地址,在确定了作为从目标网页中提取出来的栏目名称的链接名称后,获取该链接名称对应的链接地址,通过链接地址即可爬取其关联的网页内容。
[0043] 图6是根据本发明实施例的一种可选的栏目信息提取装置的示意图,如图6所示,该装置包括:
[0044] 第一获取单元10,用于获取栏目名称统计表,其中,栏目名称统计表包括栏目名称和栏目名称的出现次数;
[0045] 解析单元20,用于从目标网页中解析出至少一个第一链接名称;
[0046] 匹配单元30,用于将第一链接名称与栏目名称统计表中记录的栏目名称进行匹配;
[0047] 确定单元40,用于按照匹配的栏目名称对应的出现次数确定一个或者多个第一链接名称作为从目标网页提取出来的栏目信息。
[0048] 在本发明实施例中,采用获取栏目名称统计表,从目标网页中解析出链接名称,将链接名称与栏目名称统计表中记录的栏目名称进行匹配的方式,通过按照匹配的栏目名称对应的出现次数确定栏目信息,达到了获取所有栏目页地址的目的,从而实现了自动获取网站首页栏目页信息的技术效果,进而解决了由于无法自动获取栏目信息造成的获取栏目信息的效率低下的技术问题。
[0049] 可选地,第一获取单元包括:爬取模块,用于爬取多个网站的首页源码;解析模块,用于从多个网站的首页源码中解析出至少一个第二链接名称;统计模块,用于对至少一个第二链接名称中长度小于或者等于预设长度的第二链接名称出现的第一次数进行统计;生成模块,用于根据长度小于或者等于预设长度的第二链接名称和第一次数生成栏目名称统计表,其中,长度小于或者等于预设长度的第二链接名称作为栏目名称,第一次数作为栏目名称的出现次数。
[0050] 同一类型的网站,其首页的栏目页往往都使用相同或者相近的名称,通过对某一类型的网站的统计就可以获取该类网站首页的栏目页的常用名称。以政府网站为例,爬取大量的政府网站的首页的内容,然后使用开源工具对网页的内容进行解析,将其中的链接信息的名称解析出来,这里面包含了栏目页名称和非栏目页名称。通过调研发现,政府网站首页所使用的栏目页名称,其长度通常都少于8个字符,按照名称的长度对解析出的链接名称进行筛选,将长度小于8个字符的链接名称筛选出来,对这些链接名称进行统计就得到了栏目名称统计表。在该栏目名称统计表中,包含有链接名称以及链接名称出现的次数,其中,链接名称出现的次数越多,意味着该链接名称越有可能被作为政府类网站首页的栏目页名称。需要说明的是,获取栏目名称统计表的过程是一个自学习及人工校正的过程,在爬取网站首页的内容时,爬取的网页的数量越多越好,最好不要低于4000个。
[0051] 可选地,匹配单元包括:查找模块,用于在栏目名称统计表中查找与第一链接名称相同或者包含第一链接名称的栏目名称。
[0052] 将目标网页中提取出来的链接名称与栏目名称统计表中的栏目名称进行匹配,就是在栏目名称统计表中查找与该链接名称一致,或者包含该链接名称的栏目名称。由于栏目名称统计表中,链接名称出现的次数能够反映出该链接名称可能作为网站首页栏目名称的概率,因此通过将链接名称与栏目名称统计表中的栏目名称进行匹配,可以确定该链接名称作为网页栏目名称的概率的大小。
[0053] 可选地,确定单元包括:打分模块,用于根据栏目名称的出现次数对匹配的第一链接名称进行打分,其中,第一链接信息的得分与栏目名称的出现次数正相关;提取模块,用于按照匹配的第一链接名称的分数提取出一个或者多个第一链接名称作为栏目信息。
[0054] 在将目标网页中解析出的链接名称与栏目名称统计表中的栏目名称进行匹配后,根据链接名称匹配的栏目名称的出现次数,可以确定链接名称作为网页栏目名称的概率大小,为了方便对概率大小的衡量和比较,可以采用打分的方式将该概率量化,即根据与链接名称相匹配的栏目名称统计表中的栏目名称的出现次数,对该链接名称进行打分,链接名称的得分与其匹配的栏目名称的出现次数正相关,即链接名称匹配的栏目名称的出现次数越多,其得分越高。最后,根据每一个从目标网页中解析出的链接名称的得分,将链接名称进行排序,并取得分靠前的链接名称作为目标网页的栏目名称。如,需要从目标网页中提取10个链接名称作为栏目名称,则取得分最高的前10个链接名称,作为目标网页的栏目名称。
[0055] 可选地,装置还包括:第二获取单元,用于在按照匹配的栏目名称对应的所述出现次数确定一个或者多个所述第一链接名称作为从所述目标网页提取出来的栏目信息之后,获取栏目信息所关联的第一链接地址,其中,第一链接地址与第一链接名称一一对应;入口单元,用于将第一链接地址作为爬取网页内容的入口,并按照预设条件从入口开始爬取网页内容。
[0056] 在解析到的目标网页的源码中,链接名称与链接地址是一一对应的,在确定了作为从目标网页中提取出来的栏目名称的链接名称后,获取该链接名称对应的链接地址,通过链接地址即可以爬取其关联的网页内容。在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0057] 在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些
接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0058] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0059] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用
硬件的形式实现,也可以采用
软件功能单元的形式实现。
[0060] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对
现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、
服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读
存储器(ROM,Read-Only Memory)、
随机存取存储器(RAM,Random Access Memory)、移动
硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0061] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。