一种基于关键词检索的网络爬虫调度方法及系统的制作方法

文档序号:6535418阅读:172来源:国知局
一种基于关键词检索的网络爬虫调度方法及系统的制作方法
【专利摘要】本发明公开一种基于关键词检索的网络爬虫调度方法及系统,方法包括:调度端接收到抓取节点发送的任务请求命令;调度端从优先桶获取二次下载链接地址生成任务并加入任务列表,从动态桶获取关键词链接地址,并根据与关键词链接地址对应的页码数量衍生出所述页码数量的衍生链接地址,根据所述页码数量的衍生链接地址生成所述页码数量的任务并加入任务列表,从基本桶获取关键词链接地址生成任务并加入任务列表,调度端向抓取节点返回任务列表。本发明通过调整各虚拟桶的允许加入任务数量,从而灵活地调整不同类型的链接地址的调用数量。同时更频繁地抓取热门关键词,避免数据遗漏,减少对冷门关键词的重复抓取。
【专利说明】—种基于关键词检索的网络爬虫调度方法及系统
【技术领域】
[0001]本发明涉及网络爬虫相关【技术领域】,特别是一种基于关键词检索的网络爬虫调度方法及系统。
【背景技术】
[0002]基于关键词检索的网络爬虫是获取关键词信息的基础,但是由于信息的更新会导致网络爬虫的重复抓取或抓不全等情况的发生。特别是目标网站信息变更非常频繁的情况,比如新浪微博等微博类网站,百度等搜索类网站。对于热门关键词,由于信息更新很快,导致网络爬虫很难抓全这些数据;而对于冷门的关键词,由于信息更新比较慢,会导致信息的重复抓取。
[0003]现有的做法是给关键词设置不同的热度,然后根据关键词热度对关键词进行抓取,热度大的关键词抓取的更加频繁。
[0004]然而,现有的做法存在如下缺陷:
[0005](I)需要知道每个关键词的热度,然后根据热度来设置抓取频率。
[0006](2)在首次请求的过程中会涉及很多二次下载链接地址的请求,现有方案并没有对此进行区分。

【发明内容】

[0007]基于此,有必要针对现有技术通过设置关键词热度来设置抓取频率,需要预先确定关键词热度,从而导致抓取频率不准确的技术问题,提供一种基于关键词检索的网络爬虫调度方法及系统。
[0008]一种基于关键词检索的网络爬虫调度方法,包括:
[0009]步骤11,抓取节点向调度端发送任务请求命令;
[0010]步骤12,调度端接收到抓取节点发送的任务请求命令;
[0011]步骤13,调度端从保存二次下载链接地址的优先桶获取二次下载链接地址生成任务并加入任务列表,如果已达到任务列表的允许加入优先桶数量,则执行步骤16,否则执行步骤14,所述二次下载链接地址为所述抓取节点根据任务列表中的任务进行抓取得到抓取页面,从抓取页面中分析得到需要进行二次下载的链接地址;
[0012]步骤14,调度端从保存关键词多页码链接地址的动态桶获取关键词链接地址,并根据与关键词链接地址对应的页码数量衍生出所述页码数量的衍生链接地址,根据所述页码数量的衍生链接地址生成所述页码数量的任务并加入任务列表,如果已达到任务列表的允许加入动态桶数量,则执行步骤16,否则执行步骤15,所述关键词链接地址为在目标网站中根据所述关键词所生成的搜索结果页面的链接地址,且动态桶中的关键词链接地址对应的搜索结果页面包括大于或等于预设页码数量阈值的页码数量,所述页码数量阈值大于或等于2 ;
[0013]步骤15,调度端从保存关键词链接地址的基本桶获取关键词链接地址生成任务并加入任务列表,如果已达到任务列表的允许加入基本桶数量,则执行步骤16,所述关键词链接地址为在目标网站中根据所述关键词所生成的搜索结果页面的链接地址,且基本桶中的关键词链接地址对应的搜索结果页面包括小于预设页码数量阈值的页码数量,所述页码数量阈值大于或等于2 ;
[0014]步骤16,调度端向抓取节点返回任务列表,所述抓取节点根据所接收到的任务列表执行任务列表中的任务。
[0015]一种基于关键词检索的网络爬虫调度系统,包括:调度端以及与调度端通讯的至少一个抓取节点;
[0016]所述调度端包括:
[0017]任务请求命令接收模块,用于接收到抓取节点发送的任务请求命令;
[0018]优先桶任务生成模块,用于从保存二次下载链接地址的优先桶获取二次下载链接地址生成任务并加入任务列表,如果已达到任务列表的允许加入优先桶数量,则执行任务列表返回模块,否则执行动态桶任务生成模块,所述二次下载链接地址为所述抓取节点根据任务列表中的任务进行抓取得到抓取页面,从抓取页面中分析得到需要进行二次下载的链接地址;
[0019]动态桶任务生成模块,用于保存关键词多页码链接地址的动态桶获取关键词链接地址,并根据与关键词链接地址对应的页码数量衍生出所述页码数量的衍生链接地址,根据所述页码数量的衍生链接地址生成所述页码数量的任务并加入任务列表,如果已达到任务列表的允许加入动态桶数量,则执行任务列表返回模块,否则执行动态桶任务生成模块,所述关键词链接地址为在目标网站中根据所述关键词所生成的搜索结果页面的链接地址,且动态桶中的关键词链接地址对应的搜索结果页面包括大于或等于预设页码数量阈值的页码数量,所述页码数量阈值大于或等于2 ;
[0020]基本桶任务生成模块,用于从保存关键词链接地址的基本桶获取关键词链接地址生成任务并加入任务列表,如果已达到任务列表的允许加入基本桶数量,则执行任务列表返回模块,所述关键词链接地址为在目标网站中根据所述关键词所生成的搜索结果页面的链接地址,且基本桶中的关键词链接地址对应的搜索结果页面包括小于预设页码数量阈值的页码数量,所述页码数量阈值大于或等于2 ;
[0021]任务列表返回模块,用于向抓取节点返回任务列表;
[0022]所述抓取节点包括:
[0023]任务请求命令发送模块,用于向调度端发送任务请求命令;
[0024]任务执行模块,用于根据所接收到的任务列表执行任务列表中的任务。
[0025]本发明中优先桶、动态桶和基本桶均为虚拟桶,通过设置具有不同优先级的虚拟桶,在虚拟桶中分别保存不同类型的链接地址,对于较高热度的链接地址放置于较高优先级的虚拟桶中。通过调整各虚拟桶的允许加入任务数量,从而灵活地调整不同类型的链接地址的调用数量。同时,链接地址的热度并不是由人工设置,而是根据链接地址所抓取到的页码的实际情况设置,因此使得更频繁地抓取热门关键词,避免数据遗漏,同时减少对冷门关键词的重复抓取。
【专利附图】

【附图说明】[0026]图1为本发明一种基于关键词检索的网络爬虫调度方法的工作流程图;
[0027]图2为本发明一种基于关键词检索的网络爬虫调度系统的模块示意图;
[0028]图3为本发明一个例子的系统结构示意图;
[0029]图4为本发明一个例子桶调度管理模块的工作流程图;
[0030]图5为本发明一个例子桶更新器的工作流程图。
【具体实施方式】
[0031]下面结合附图和具体实施例对本发明做进一步详细的说明。
[0032]如图1所示为本发明一种基于关键词检索的网络爬虫调度方法的工作流程图,包括:
[0033]步骤11,抓取节点向调度端发送任务请求命令;
[0034]步骤12,调度端接收到抓取节点发送的任务请求命令;
[0035]步骤13,调度端从保存二次下载链接地址的优先桶获取二次下载链接地址生成任务并加入任务列表,如果已达到任务列表的允许加入优先桶数量,则执行步骤16,否则执行步骤14,所述二次下载链接地址为所述抓取节点根据任务列表中的任务进行抓取得到抓取页面,从抓取页面中分析得到需要进行二次下载的链接地址;
[0036]步骤14,调度端从保存关键词多页码链接地址的动态桶获取关键词链接地址,并根据与关键词链接地址对应的页码数量衍生出所述页码数量的衍生链接地址,根据所述页码数量的衍生链接地址生成所述页码数量的任务并加入任务列表,如果已达到任务列表的允许加入动态桶数量,则执行步骤16,否则执行步骤15,所述关键词链接地址为在目标网站中根据所述关键词所生成的搜索结果页面的链接地址,且动态桶中的关键词链接地址对应的搜索结果页面包括大于或等于预设页码数量阈值的页码数量,所述页码数量阈值大于或等于2 ;
[0037]步骤15,调度端从保存关键词链接地址的基本桶获取关键词链接地址生成任务并加入任务列表,如果已达到任务列表的允许加入基本桶数量,则执行步骤16,所述关键词链接地址为在目标网站中根据所述关键词所生成的搜索结果页面的链接地址,且基本桶中的关键词链接地址对应的搜索结果页面包括小于预设页码数量阈值的页码数量,所述页码数量阈值大于或等于2 ;
[0038]步骤16,调度端向抓取节点返回任务列表,所述抓取节点根据所接收到的任务列表执行任务列表中的任务。
[0039]其中,步骤13中,专门针对二次下载链接地址进行处理,二次下载链接地址,是指抓取节点根据任务列表中的任务进行抓取得到抓取页面,从抓取页面中分析得到需要进行二次下载的链接地址,例如,在百度中检索“京东”,会出现一个包括多条检索结果的搜索结果页面,每条检索结果都对应一个链接地址,检索结果所对应的链接地址即为二次下载链接地址。从抓取页面中分析得到需要进行二次下载的链接地址,现有已经有较为成熟的技术进行分析,在此不予赘述。
[0040]其中,步骤14和15中的关键词链接地址,指的是在目标网站中根据所述关键词所生成的搜索结果页面的链接地址,例如,在百度中检索“京东”,会出现一个根据关键词“京东”生成的搜索结果页面,如果关键词为热门关键词,则一个搜索结果页面并不能包括所有的搜索结果,则在搜索页面上会有一个页码数量。该页码数量用于表示有页码数量的搜索结果页面包括所述关键词。因此,页码数量越多,则表示该关键词越为热门,因此,将页码数量超过预设页码数量阈值的关键词链接地址放置在动态桶中,在步骤14中优先处理。由于是根据实际的页码数量进行判断,因此,能够更真实地反映关键词的热门程度。
[0041]其中,允许加入优先桶数量用于表示优先桶中的二次下载链接地址允许加入任务列表中的数量,允许加入动态桶数量用于表示动态桶中的关键词链接地址允许加入任务列表中的数量,允许加入基本桶数量用于表示基本桶中的关键词链接地址允许加入任务列表中的数量。
[0042]在其中一个实施例中,所述步骤13具体包括:从保存二次下载链接地址的优先桶获取二次下载链接地址生成任务并加入任务列表,并从优先桶中删除已生成任务的二次下载链接地址,如果已达到任务列表的允许加入优先桶数量,则执行步骤16,否则如果优先桶中还保存有二次下载链接地址,则执行步骤13,如果优先桶中所有的二次下载链接地址均已删除,则执行步骤14。
[0043]本实施例优先执行二次下载链接地址,且该二次下载链接地址仅执行一次后删除,避免重复抓取。
[0044]在其中一个实施例中,所述步骤14具体包括:从保存关键词链接地址的动态桶获取未调度的关键词链接地址,并根据与关键词链接地址对应的页码数量衍生出所述页码数量的衍生链接地址,根据所述页码数量的衍生链接地址生成所述页码数量的任务并加入任务列表,并设置已生成任务的关键词链接地址的状态为已调度,如果已达到任务列表的允许加入动态桶数量,则执行步骤16,并设置动态桶中所有的关键词链接地址的状态为未调度,否则如果动态桶中还保存有未调度的关键词链接地址,则执行步骤14,如果动态桶中未保存有未调度的关键词链接地址,则执行步骤15。
[0045]本实施例中,由于动态桶中的关键词链接地址为热门关键词对应的链接地址,因此会被多次调用。从而避免热门关键词抓取的遗漏。
[0046]在其中一个实施例中,所述基本桶包括活动桶和挂起桶,所述步骤15具体包括,从保存关键词链接地址的活动桶获取调度时间最前的关键词链接地址生成任务并加入任务列表,并将已生成任务的关键词链接地址的调度时间增加预设的调度时间增加量后移动到挂起桶,如果已达到任务列表的允许加入基本桶数量,则执行步骤16,否则如果活动桶中还保存有关键词链接地址,则执行步骤15,如果活动桶中未保存关键词链接地址,则执行步骤16。
[0047]本实施例中,由于基本桶中的关键词链接地址为冷门关键词对应的链接地址,因此对基本桶进一步设定为活动桶和挂起桶,活动桶中的链接地址执行一次后会移动到挂起桶中,间隔一段调度时间增加量之后再执行,从而避免对冷门关键词的重复抓取。
[0048]在其中一个实施例中,还包括:
[0049]抓取节点根据任务列表中的任务进行抓取得到抓取页面,对所述抓取页面进行分析得到包括二次下载链接地址、信息详情或页码数量的分析数据,将分析数据发送到调度端;
[0050]调度端接收到分析数据:
[0051]如果分析数据为二次下载链接地址,则将二次下载链接地址放入优先桶;[0052]如果分析数据为信息详情,则将信息详情放入数据桶;
[0053]如果分析数据为页码数量,则在动态桶和基本桶中调整与所述页码数量对应的关键词链接地址。
[0054]将不同的分析数据放置于不同的虚拟桶中,实现对虚拟桶的链接地址的更新。
[0055]在其中一个实施例中,调度端在动态桶和基本桶中调整与所述页码数量对应的关键词链接地址具体包括:
[0056]设置当前接收到的页码数量为新页码数量,设置上一次同一关键词链接地址接收到的页码数量为旧页码数量;
[0057]如果旧页码数量与新页码数量不一致,则:
[0058]如果旧页码数量大于或等于所述页码数量阈值,且新页码数量大于或等于所述页码数量阈值,则修改对应的关键词链接地址对应的页码数量为新页码数量;
[0059]如果旧页码数量大于或等于所述页码数量阈值,且新页码数量小于所述页码数量阈值,则将对应的关键词链接地址移动到基本桶;
[0060]如果旧页码数量小于所述页码数量阈值,且新页码数量大于或等于所述页码数量阈值,则将对应的关键词链接地址移动到动态桶。
[0061]本实施例,进一步限定根据旧页码数量和新页码数量的比较在动态桶和基本桶中调整与所述页码数量对应的关键词链接地址。
[0062]在其中一个实施例中:
[0063]抓取节点根据任务列表中的任务进行抓取得到抓取页面,对所述抓取页面进行分析得到包括二次下载链接地址、信息详情或页码数量的分析数据,将分析数据发送到调度端;
[0064]调度端接收到分析数据:
[0065]如果分析数据为二次下载链接地址,则将二次下载链接地址放入优先桶;
[0066]如果分析数据为信息详情,则将信息详情放入数据桶;
[0067]如果分析数据为页码数量,则设置当前接收到的页码数量为新页码数量,设置上一次同一关键词链接地址接收到的页码数量为旧页码数量,且如果旧页码数量与新页码数量不一致,则:
[0068]如果旧页码数量大于或等于所述页码数量阈值,且新页码数量大于或等于所述页码数量阈值,则修改对应的关键词链接地址对应的页码数量为新页码数量;
[0069]如果旧页码数量大于或等于所述页码数量阈值,且新页码数量小于所述页码数量阈值,则将对应的关键词链接地址移动到活动桶;
[0070]如果旧页码数量小于所述页码数量阈值,且新页码数量大于或等于所述页码数量阈值,则将对应的关键词链接地址移动到动态桶;
[0071]如果旧页码数量小于所述页码数量阈值,且新页码数量小于所述页码数量阈值,则对挂起桶进行检索,将挂起桶中调度时间到达当前时间的关键词链接地址移动到活动桶。
[0072]本实施例,进一步限定根据旧页码数量和新页码数量的比较在动态桶和活动桶中调整与所述页码数量对应的关键词链接地址,以及在适当的时候对挂起桶进行检索,避免挂起桶中的链接地址长时间被搁置。[0073]在其中一个实施例中,所述允许加入动态桶数量大于所述允许加入基本桶数量。通过设置允许加入动态桶数量大于允许加入基本桶数量,从而使得更多的资源用于抓取热门关键词。
[0074]如图2所示为本发明一种基于关键词检索的网络爬虫调度系统的模块示意图,其特征在于,包括:调度端21以及与调度端21通讯的至少一个抓取节点22 ;
[0075]所述调度端21包括:
[0076]任务请求命令接收模块211,用于接收到抓取节点发送的任务请求命令;
[0077]优先桶任务生成模块212,用于从保存二次下载链接地址的优先桶获取二次下载链接地址生成任务并加入任务列表,如果已达到任务列表的允许加入优先桶数量,则执行任务列表返回模块,否则执行动态桶任务生成模块,所述二次下载链接地址为所述抓取节点根据任务列表中的任务进行抓取得到抓取页面,从抓取页面中分析得到需要进行二次下载的链接地址;
[0078]动态桶任务生成模块213,用于保存关键词多页码链接地址的动态桶获取关键词链接地址,并根据与关键词链接地址对应的页码数量衍生出所述页码数量的衍生链接地址,根据所述页码数量的衍生链接地址生成所述页码数量的任务并加入任务列表,如果已达到任务列表的允许加入动态桶数量,则执行任务列表返回模块,否则执行动态桶任务生成模块,所述关键词链接地址为在目标网站中根据所述关键词所生成的搜索结果页面的链接地址,且动态桶中的关键词链接地址对应的搜索结果页面包括大于或等于预设页码数量阈值的页码数量,所述页码数量阈值大于或等于2 ;
[0079]基本桶任务生成模块214,用于从保存关键词链接地址的基本桶获取关键词链接地址生成任务并加入任务列表,如果已达到任务列表的允许加入基本桶数量,则执行任务列表返回模块,所述关键词链接地址为在目标网站中根据所述关键词所生成的搜索结果页面的链接地址,且基本桶中的关键词链接地址对应的搜索结果页面包括小于预设页码数量阈值的页码数量,所述页码数量阈值大于或等于2 ;
[0080]任务列表返回模块215,用于向抓取节点返回任务列表;
[0081 ] 所述抓取节点22包括:
[0082]任务请求命令发送模块221,用于向调度端发送任务请求命令;
[0083]任务执行模块222,用于根据所接收到的任务列表执行任务列表中的任务。
[0084]在其中一个实施例中,所述优先桶任务生成模块212具体用于:从保存二次下载链接地址的优先桶获取二次下载链接地址生成任务并加入任务列表,并从优先桶中删除已生成任务的二次下载链接地址,如果已达到任务列表的允许加入优先桶数量,则执行任务列表返回模块215,否则如果优先桶中还保存有二次下载链接地址,则执行优先桶任务生成模块212,如果优先桶中所有的二次下载链接地址均已删除,则执行动态桶任务生成模块213。
[0085]在其中一个实施例中,所述动态桶任务生成模块213具体用于:从保存关键词链接地址的动态桶获取未调度的关键词链接地址,并根据与关键词链接地址对应的页码数量衍生出所述页码数量的衍生链接地址,根据所述页码数量的衍生链接地址生成所述页码数量的任务并加入任务列表,并设置已生成任务的关键词链接地址的状态为已调度,如果已达到任务列表的允许加入动态桶数量,则执行任务列表返回模块215,并设置动态桶中所有的关键词链接地址的状态为未调度,否则如果动态桶中还保存有未调度的关键词链接地址,则执行动态桶任务生成模块213,如果动态桶中未保存有未调度的关键词链接地址,则执行基本桶任务生成模块214。
[0086]在其中一个实施例中,所述基本桶包括活动桶和挂起桶,所述基本桶任务生成模块214具体用于,从保存关键词链接地址的活动桶获取调度时间最前的关键词链接地址生成任务并加入任务列表,并将已生成任务的关键词链接地址的调度时间增加预设的调度时间增加量后移动到挂起桶,如果已达到任务列表的允许加入基本桶数量,则执行任务列表返回模块215,否则如果活动桶中还保存有关键词链接地址,则执行基本桶任务生成模块214,如果活动桶中未保存关键词链接地址,则执行任务列表返回模块215。
[0087]在其中一个实施例中:
[0088]所述任务执行模块具体用于:根据任务列表中的任务进行抓取得到抓取页面,对所述抓取页面进行分析得到包括二次下载链接地址、信息详情或页码数量的分析数据,将分析数据发送到调度端;
[0089]调度端还包括分析数据接收模块,用于接收到分析数据:
[0090]如果分析数据为二次下载链接地址,则将二次下载链接地址放入优先桶;
[0091]如果分析数据为信息详情,则将信息详情放入数据桶;
[0092]如果分析数据为页码数量,则在动态桶和基本桶中调整与所述页码数量对应的关键词链接地址。
[0093]在其中一个实施例中,分析数据接收模块在动态桶和基本桶中调整与所述页码数量对应的关键词链接地址具体包括:
[0094]设置当前接收到的页码数量为新页码数量,设置上一次同一关键词链接地址接收到的页码数量为旧页码数量;
[0095]如果旧页码数量与新页码数量不一致,则:
[0096]如果旧页码数量大于或等于所述页码数量阈值,且新页码数量大于或等于所述页码数量阈值,则修改对应的关键词链接地址对应的页码数量为新页码数量;
[0097]如果旧页码数量大于或等于所述页码数量阈值,且新页码数量小于所述页码数量阈值,则将对应的关键词链接地址移动到基本桶;
[0098]如果旧页码数量小于所述页码数量阈值,且新页码数量大于或等于所述页码数量阈值,则将对应的关键词链接地址移动到动态桶。
[0099]在其中一个实施例中:
[0100]所述任务执行模块具体用于:根据任务列表中的任务进行抓取得到抓取页面,对所述抓取页面进行分析得到包括二次下载链接地址、信息详情或页码数量的分析数据,将分析数据发送到调度端;
[0101]调度端还包括分析数据接收模块,用于接收到分析数据:
[0102]如果分析数据为二次下载链接地址,则将二次下载链接地址放入优先桶;
[0103]如果分析数据为信息详情,则将信息详情放入数据桶;
[0104]如果分析数据为页码数量,则设置当前接收到的页码数量为新页码数量,设置上一次同一关键词链接地址接收到的页码数量为旧页码数量,且如果旧页码数量与新页码数量不一致,则:[0105]如果旧页码数量大于或等于所述页码数量阈值,且新页码数量大于或等于所述页码数量阈值,则修改对应的关键词链接地址对应的页码数量为新页码数量;
[0106]如果旧页码数量大于或等于所述页码数量阈值,且新页码数量小于所述页码数量阈值,则将对应的关键词链接地址移动到活动桶;
[0107]如果旧页码数量小于所述页码数量阈值,且新页码数量大于或等于所述页码数量阈值,则将对应的关键词链接地址移动到动态桶;
[0108]如果旧页码数量小于所述页码数量阈值,且新页码数量小于所述页码数量阈值,则对挂起桶进行检索,将挂起桶中调度时间到达当前时间的关键词链接地址移动到活动桶。
[0109]在其中一个实施例中,所述允许加入动态桶数量大于所述允许加入基本桶数量。
[0110]如图3所示为本发明一个例子的系统结构示意图,包括:
[0111]位于抓取节点31的线程请求模块311、任务获取模块312、网页下载器313、文档解析器314、统计模块315、数据存储模块316 ;
[0112]位于调度端32的优先桶321、动态桶322、基本桶323、活动桶3231、挂起桶3232、桶更新器324、数据桶325、数据库326。
[0113]其中,桶调度管理模块(BucketScheduler)包含优先桶321、动态桶322、基本桶323,优先桶321中保存抓取节点返回的二次下载链接地址,这些URL在调度完后会从桶中删除。动态桶322中保存各网站的关键词组成的URL,这些URL会根据统计模块返回的结果衍生出新的URL,这些衍生出的URL不会保存,但是会和动态桶中的URL —起被调度。常规桶中也保存各网站的关键词组成的URL,但是这些URL不会衍生新的URL,常规桶323分为两部分:活动桶3231和挂起桶3232,活动桶3231中的URL会按调度时间进行排序,调度时间越早的会越早调度,而挂起桶3232中的URL则不会被调度,这两个桶中的URL会相互交换。一旦调度端接收到抓取节点的任务请求,桶调度管理模块则从桶中提取相应的URL构建成任务发给抓取节点。构建任务的规则如下:假如任务大小 size=1000。优先桶(PriorityBucket)中的 URL 数为 priorityBucket=300。动态桶(DynamicBucket)中的 URL 数为 dynamicBucket=100 且每个 URL 的平均页码数量 page=5。常规桶(CommonBucket)中的URL数为commonBucket=500。则首先从优先桶中获取URL,剩余的任务大小为remainsize=700。接着从动态桶获取URL,此时剩余的任务大小为remainSize=700-100*5=200o最后从常规桶获取URL,如果常规桶中活动桶的URL数小于等于200,则把这些URL全部构建任务,同时把这些URL全部加入挂起桶;如果活动桶中的URL数大于200,则取调度时间靠前的前200个URL构建任务,并把这些URL加入挂起桶。如果挂起桶中的URL到了可以调度的时间,则把它们移入活动桶。图4是桶调度管理模块的流程图。其中,priorityBucket为允许加入优先桶数量,dynamicBucketX每个URL的平均页码数量为允许加入动态桶数量,任务大小size减去priorityBucket再减去dynamicBucket X每个URL的平均页码数量,则为允许加入基本桶数量。如图4所示,包括:
[0114]步骤S401,从优先桶中获取URL,同时从桶中删除,如果任务已满,返回,否则执行步骤S402 ;
[0115]步骤S402,从动态桶中获取URL,并通过页码衍生出新的URL,如果任务已满,返回,否则执行步骤S403 ;[0116]步骤S403,从活动桶(常规桶)获取URL,修改这些URL的下次调度时间,插入挂起桶。
[0117]统计模块位于抓取端,抓取节点请求到数据后,提取页面的信息数以及该页第一条信息和最后一条信息的时间间隔,传给统计模块,统计模块根据这些数据计算该关键词在30分钟内可以产生的页码数量,并把这些数据传给调度端。
[0118]桶更新器324 (BucketUpdater)位于调度端32,它的主要功能是更新优先桶321、动态桶322、基本桶323中的URL。抓取节点31抽取到的数据,包括二次下载链接地址、信息详情和页码数量都会传给调度端32的桶更新器324,桶更新器324接收到这些数据后,会根据数据类型更新不同的桶,具体的过程,如图5所示,包括:
[0119]步骤S510,对数据类型进行检查,如果分析出的数据是二次下载链接地址,则执行步骤S520,如果分析出的数据是信息详情,则执行步骤S540,如果分析分析出的数据是页码数量,则执行步骤S540;
[0120]步骤S520,把这些数据插入优先桶(PriorityBucket),供调度机调度;
[0121]步骤S530,把这些数据插入数据桶(DataBucket),供业务方取数据。
[0122]步骤S540,与上次获取到的页码数量进行比较,如果页码数量相等,则不进行任何操作,返回。如果页码数量不等,则:
[0123]如果老的页码数量(oldPages)大于等于阈值(阈值threshold可以自己设定,在本方案中设置为3)即oldPages>=threshold,且新的页码数量(newPages)也大于等于阈值即 newPages>=threshold。则执行步骤 S541,如果 oldPages>=threshold,但 newPages〈threshold,则执行步骤 S542,如果 oldPages〈threshold,但 newPages>=threshold,则执行步骤 S543,如果 oldPages〈threshold,但newPages〈threshold,则执行步骤 S544 ;
[0124]步骤S541,该URL目前位于动态桶,无需进行桶的交换,只需修改它的页码数量即可。
[0125]步骤S542,该URL目前位于动态桶,需要把它移到活动桶。
[0126]步骤S543,该URL目前位于常规桶,需要把它移到动态桶。
[0127]步骤S544,该URL目前位于常规桶并且很有可能是挂起桶,需要扫描挂起桶,把挂起桶中到达调度时间的URL加入活动桶。
[0128]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1.一种基于关键词检索的网络爬虫调度方法,其特征在于,包括: 步骤(11),抓取节点向调度端发送任务请求命令; 步骤(12),调度端接收到抓取节点发送的任务请求命令; 步骤(13),调度端从保存二次下载链接地址的优先桶获取二次下载链接地址生成任务并加入任务列表,如果已达到任务列表的允许加入优先桶数量,则执行步骤(16),否则执行步骤(14),所述二次下载链接地址为所述抓取节点根据任务列表中的任务进行抓取得到抓取页面,从抓取页面中分析得到需要进行二次下载的链接地址; 步骤(14),调度端从保存关键词多页码链接地址的动态桶获取关键词链接地址,并根据与关键词链接地址对应的页码数量衍生出所述页码数量的衍生链接地址,根据所述页码数量的衍生链接地址生成所述页码数量的任务并加入任务列表,如果已达到任务列表的允许加入动态桶数量,则执行步骤(16),否则执行步骤(15),所述关键词链接地址为在目标网站中根据所述关键词所生成的搜索结果页面的链接地址,且动态桶中的关键词链接地址对应的搜索结果页面包括大于或等于预设页码数量阈值的页码数量,所述页码数量阈值大于或等于2 ; 步骤(15),调度端从保存关键词链接地址的基本桶获取关键词链接地址生成任务并加入任务列表,如果已达到任务列表的允许加入基本桶数量,则执行步骤(16),所述关键词链接地址为在目标网站中根据所述关键词所生成的搜索结果页面的链接地址,且基本桶中的关键词链接地址对应的搜索结果页面包括小于预设页码数量阈值的页码数量,所述页码数量阈值大于或等于2 ; 步骤(16),调度端向抓取节点返回任务列表,所述抓取节点根据所接收到的任务列表执行任务列表中的任务。
2.根据权利要求1所述的基于关键词检索的网络爬虫调度方法,其特征在于,所述步骤(13)具体包括:从保存二次下载链接地址的优先桶获取二次下载链接地址生成任务并加入任务列表,并从优先桶中删除已生成任务的二次下载链接地址,如果已达到任务列表的允许加入优先桶数量,则执行步骤(16),否则如果优先桶中还保存有二次下载链接地址,则执行步骤(13),如果优先桶中所有的二次下载链接地址均已删除,则执行步骤(14)。
3.根据权利要求1所述的基于关键词检索的网络爬虫调度方法,其特征在于,所述步骤(14)具体包括:从保存关键词链接地址的动态桶获取未调度的关键词链接地址,并根据与关键词链接地址对应的页码数量衍生出所述页码数量的衍生链接地址,根据所述页码数量的衍生链接地址生成所述页码数量的任务并加入任务列表,并设置已生成任务的关键词链接地址的状态为已调度,如果已达到任务列表的允许加入动态桶数量,则执行步骤(16),并设置动态桶中所有的关键词链接地址的状态为未调度,否则如果动态桶中还保存有未调度的关键词链接地址,则执行步骤(14),如果动态桶中未保存有未调度的关键词链接地址,则执行步骤(15)。
4.根据权利要求1所述的基于关键词检索的网络爬虫调度方法,其特征在于,所述基本桶包括活动桶和挂起桶,所述步骤(15)具体包括,从保存关键词链接地址的活动桶获取调度时间最前的关键词链接地址生成任务并加入任务列表,并将已生成任务的关键词链接地址的调度时间增加预设的调度时间增加量后移动到挂起桶,如果已达到任务列表的允许加入基本桶数量,则执行步骤(16),否则如果活动桶中还保存有关键词链接地址,则执行步骤(15),如果活动桶中未保存关键词链接地址,则执行步骤(16)。
5.根据权利要求1所述的基于关键词检索的网络爬虫调度方法,其特征在于,还包括: 抓取节点根据任务列表中的任务进行抓取得到抓取页面,对所述抓取页面进行分析得到包括二次下载链接地址、信息详情或页码数量的分析数据,将分析数据发送到调度端; 调度端接收到分析数据: 如果分析数据为二次下载链接地址,则将二次下载链接地址放入优先桶; 如果分析数据为信息详情,则将信息详情放入数据桶; 如果分析数据为页码数量,则在动态桶和基本桶中调整与所述页码数量对应的关键词链接地址。
6.根据权利要求5所述的基于关键词检索的网络爬虫调度方法,其特征在于,调度端在动态桶和基本桶中调整与所述页码数量对应的关键词链接地址具体包括: 设置当前接收到的页码数量为新页码数量,设置上一次同一关键词链接地址接收到的页码数量为旧页码数量; 如果旧页码数量与新页码数量不一致,则: 如果旧页码数量大于或等于所述页码数量阈值,且新页码数量大于或等于所述页码数量阈值,则修改对应的关键词链接地址对应的页码数量为新页码数量; 如果旧页码数量大于或等于所述页码数量阈值,且新页码数量小于所述页码数量阈值,则将对应的关键词链接地址移动到基本桶; 如果旧页码数量小于所述页码数量阈值,且新页码数量大于或等于所述页码数量阈值,则将对应的关键词链接地址移动到动态桶。
7.根据权利要求4所述的基于关键词检索的网络爬虫调度方法,其特征在于: 抓取节点根据任务列表中的任务进行抓取得到抓取页面,对所述抓取页面进行分析得到包括二次下载链接地址、信息详情或页码数量的分析数据,将分析数据发送到调度端; 调度端接收到分析数据: 如果分析数据为二次下载链接地址,则将二次下载链接地址放入优先桶; 如果分析数据为信息详情,则将信息详情放入数据桶; 如果分析数据为页码数量,则设置当前接收到的页码数量为新页码数量,设置上一次同一关键词链接地址接收到的页码数量为旧页码数量,且如果旧页码数量与新页码数量不一致,则: 如果旧页码数量大于或等于所述页码数量阈值,且新页码数量大于或等于所述页码数量阈值,则修改对应的关键词链接地址对应的页码数量为新页码数量; 如果旧页码数量大于或等于所述页码数量阈值,且新页码数量小于所述页码数量阈值,则将对应的关键词链接地址移动到活动桶; 如果旧页码数量小于所述页码数量阈值,且新页码数量大于或等于所述页码数量阈值,则将对应的关键词链接地址移动到动态桶; 如果旧页码数量小于所述页码数量阈值,且新页码数量小于所述页码数量阈值,则对挂起桶进行检索,将挂起桶中调度时间到达当前时间的关键词链接地址移动到活动桶。
8.根据权利要求1所述的基于关键词检索的网络爬虫调度方法,其特征在于,所述允许加入动态桶数量大于允许加入基本桶数量。
9.一种基于关键词检索的网络爬虫调度系统,其特征在于,包括:调度端以及与调度端通讯的至少一个抓取节点; 所述调度端包括: 任务请求命令接收模块,用于接收到抓取节点发送的任务请求命令; 优先桶任务生成模块,用于从保存二次下载链接地址的优先桶获取二次下载链接地址生成任务并加入任务列表,如果已达到任务列表的允许加入优先桶数量,则执行任务列表返回模块,否则执行动态桶任务生成模块,所述二次下载链接地址为所述抓取节点根据任务列表中的任务进行抓取得到抓取页面,从抓取页面中分析得到需要进行二次下载的链接地址; 动态桶任务生成模块,用于保存关键词多页码链接地址的动态桶获取关键词链接地址,并根据与关键词链接地址对应的页码数量衍生出所述页码数量的衍生链接地址,根据所述页码数量的衍生链接地址生成所述页码数量的任务并加入任务列表,如果已达到任务列表的允许加入动态桶数量,则执行任务列表返回模块,否则执行动态桶任务生成模块,所述关键词链接地址为在目标网站中根据所述关键词所生成的搜索结果页面的链接地址,且动态桶中的关键词链接地址对应的搜索结果页面包括大于或等于预设页码数量阈值的页码数量,所述页码数量阈值大于或等于2 ; 基本桶任务生成模块,用于从保存关键词链接地址的基本桶获取关键词链接地址生成任务并加入任务列表,如果已达到任务列表的允许加入基本桶数量,则执行任务列表返回模块,所述关键词链接地址为在目标网站中`根据所述关键词所生成的搜索结果页面的链接地址,且基本桶中的关键词链接地址对应的搜索结果页面包括小于预设页码数量阈值的页码数量,所述页码数量阈值大于或等于2 ; 任务列表返回模块,用于向抓取节点返回任务列表; 所述抓取节点包括: 任务请求命令发送模块,用于向调度端发送任务请求命令; 任务执行模块,用于根据所接收到的任务列表执行任务列表中的任务。
10.根据权利要求9所述的基于关键词检索的网络爬虫调度系统,其特征在于,所述优先桶任务生成模块具体用于:从保存二次下载链接地址的优先桶获取二次下载链接地址生成任务并加入任务列表,并从优先桶中删除已生成任务的二次下载链接地址,如果已达到任务列表的允许加入优先桶数量,则执行任务列表返回模块,否则如果优先桶中还保存有二次下载链接地址,则执行优先桶任务生成模块,如果优先桶中所有的二次下载链接地址均已删除,则执行动态桶任务生成模块。
11.根据权利要求9所述的基于关键词检索的网络爬虫调度系统,其特征在于,所述动态桶任务生成模块具体用于:从保存关键词链接地址的动态桶获取未调度的关键词链接地址,并根据与关键词链接地址对应的页码数量衍生出所述页码数量的衍生链接地址,根据所述页码数量的衍生链接地址生成所述页码数量的任务并加入任务列表,并设置已生成任务的关键词链接地址的状态为已调度,如果已达到任务列表的允许加入动态桶数量,则执行任务列表返回模块,并设置动态桶中所有的关键词链接地址的状态为未调度,否则如果动态桶中还保存有未调度的关键词链接地址,则执行动态桶任务生成模块,如果动态桶中未保存有未调度的关键词链接地址,则执行基本桶任务生成模块。
12.根据权利要求9所述的基于关键词检索的网络爬虫调度系统,其特征在于,所述基本桶包括活动桶和挂起桶,所述基本桶任务生成模块具体用于,从保存关键词链接地址的活动桶获取调度时间最前的关键词链接地址生成任务并加入任务列表,并将已生成任务的关键词链接地址的调度时间增加预设的调度时间增加量后移动到挂起桶,如果已达到任务列表的允许加入基本桶数量,则执行任务列表返回模块,否则如果活动桶中还保存有关键词链接地址,则执行基本桶任务生成模块,如果活动桶中未保存关键词链接地址,则执行任务列表返回模块。
13.根据权利要求9所述的基于关键词检索的网络爬虫调度系统,其特征在于: 所述任务执行模块具体用于:根据任务列表中的任务进行抓取得到抓取页面,对所述抓取页面进行分析得到包括二次下载链接地址、信息详情或页码数量的分析数据,将分析数据发送到调度端; 调度端还包括分析数据接收模块,用于接收到分析数据: 如果分析数据为二次下载链接地址,则将二次下载链接地址放入优先桶; 如果分析数据为信息详情,则将信息详情放入数据桶; 如果分析数据为页码数量,则在动态桶和基本桶中调整与所述页码数量对应的关键词链接地址。
14.根据权利要求13所述的基于关键词检索的网络爬虫调度系统,其特征在于,分析数据接收模块在动态桶和基本桶中调整与所述页码数量对应的关键词链接地址具体包括: 设置当前接收到的页码数量为新页码数量,设置上一次同一关键词链接地址接收到的页码数量为旧页码数量; 如果旧页码数量与新页码数量不一致,则: 如果旧页码数量大于或等于所述页码数量阈值,且新页码数量大于或等于所述页码数量阈值,则修改对应的关键词链接地址对应的页码数量为新页码数量; 如果旧页码数量大于或等于所述页码数量阈值,且新页码数量小于所述页码数量阈值,则将对应的关键词链接地址移动到基本桶; 如果旧页码数量小于所述页码数量阈值,且新页码数量大于或等于所述页码数量阈值,则将对应的关键词链接地址移动到动态桶。
15.根据权利要求12所述的基于关键词检索的网络爬虫调度系统,其特征在于: 所述任务执行模块具体用于:根据任务列表中的任务进行抓取得到抓取页面,对所述抓取页面进行分析得到包括二次下载链接地址、信息详情或页码数量的分析数据,将分析数据发送到调度端; 调度端还包括分析数据接收模块,用于接收到分析数据: 如果分析数据为二次下载链接地址,则将二次下载链接地址放入优先桶; 如果分析数据为信息详情,则将信息详情放入数据桶; 如果分析数据为页码数量,则设置当前接收到的页码数量为新页码数量,设置上一次同一关键词链接地址接收到的页码数量为旧页码数量,且如果旧页码数量与新页码数量不一致,则: 如果旧页码数量大于或等 于所述页码数量阈值,且新页码数量大于或等于所述页码数量阈值,则修改对应的关键词链接地址对应的页码数量为新页码数量; 如果旧页码数量大于或等于所述页码数量阈值,且新页码数量小于所述页码数量阈值,则将对应的关键词链接地址移动到活动桶; 如果旧页码数量小于所述页码数量阈值,且新页码数量大于或等于所述页码数量阈值,则将对应的关键词链接地址移动到动态桶; 如果旧页码数量小于所述页码数量阈值,且新页码数量小于所述页码数量阈值,则对挂起桶进行检索,将挂起桶中调度时间到达当前时间的关键词链接地址移动到活动桶。
16.根据权利要求9所述的基于关键词检索的网络爬虫调度系统,其特征在于,所述允许加入动态桶数量大于允许加入基本桶数量。
【文档编号】G06F17/30GK103761279SQ201410011079
【公开日】2014年4月30日 申请日期:2014年1月9日 优先权日:2014年1月9日
【发明者】邓姿 申请人:北京京东尚科信息技术有限公司, 北京京东世纪贸易有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1