一种大数据网络爬虫分页选择方法和系统与流程

文档序号:11519817阅读:536来源:国知局
本发明涉及大数据分析处理
技术领域
:,具体是一种大数据网络爬虫分页选择方法和系统。
背景技术
::随着网络的迅速发展,每时每刻万维网都在产生各式各样的数据。目前,中国的网站总数约454万个,网页数量突破2000亿个,浪涌般的数据蕴藏着惊人的价值。如何有效地提取并利用这些信息成为一个巨大的挑战。如何让这些繁杂无序的互联网数据产生价值,如何把万维网变成自家的数据库,如何让企业轻松驾驭这些海量数据信息来进行创新、快速洞悉商机,搜索引擎(searchengine),例如传统的通用搜索引擎google和baidu等,作为一种辅助人们检索信息的工具成为用户访问万维网的入口和指南,被人们广泛使用。但是,这些通用性搜索引擎也存在着一定的局限性,为了尽可能大的网络覆盖率,其搜索出来的数据庞杂精准度低,所返回的结果包中含大量用户不关心的网页。在目前大数据产业的背景下,网络爬虫通常是一种快速获取互联网数据的有效途径。其中,聚焦类爬虫并不追求大的覆盖,而将目标定为抓取与某一特定主题内容相关的网页,它根据既定的抓取目标,根据一定的网页分析算法过滤与主题无关的链接,有选择的访问万维网上的网页与相关的链接获取所需要的信息。往往我们需要获取的数据是在网页有列表或在表格信息中,而这些数据一般都是具有分页的,聚焦爬虫需要精准识别其分页标签,才能循环获取下一页的数据。当在爬取数据时,因有些网页中的页面按钮html结构发生改变导致无法定位到相应的标签信息,造成不能循环爬取网页数据的问题,例如有些网页中的“下一页”html结构在点击几次“下一页”后会发生改变,数据结构发生改变后则不能通过原来的html定位符定位到“下一页”这个按钮,无法循环爬取网页数据。技术实现要素:本发明的目的在于克服现有技术的不足,提供一种大数据网络爬虫分页选择方法和系统,直接省略当前网页中的页面按钮的html结构是否发生改变这个可能造成整个爬虫系统无法循环爬取数据的因素,能够精准识别数据的分页标签,防止循环爬取数据过程中断,提升网页大数据的爬取效率,提高大数据分析处理效率。本发明的目的是通过以下技术方案来实现的:一种大数据网络爬虫分页选择方法,它包括以下步骤:s1:第一解析,解析爬虫脚本;s2:第一匹配,获取匹配符,对爬虫脚本内容中的标签信息进行匹配;s3:存储,将匹配成功的标签的特征值存入url队列中;s4:获取及校验,获取url队列中的url连接地址,校验url连接地址;s5:第二匹配,获取校验后的url连接地址,进行地址匹配;s6:第二解析,解析地址匹配成功的url地址的网页,获取分页信息。进一步描述,在步骤s6之后,还包括一个返回步骤s7,所述的返回步骤s7,在获取分页信息后,返回到步骤s2中,从而实现循环爬取。进一步描述,在步骤s1之前,还包括一个配置步骤s0,所述的配置步骤s0,用于配置爬虫脚本中的分页配置部分。所述的配置步骤s0,包括以下子步骤:第一配置,配置分页组的定位符;第二配置,配置页面按钮的匹配符;第三配置,配置标签的属性元素;第四配置,配置标题元素;第五配置,配置文本元素。所述的url队列为内存队列。所述的url队列为文件队列。进一步描述,在步骤s1中,包括以下子步骤:s11:读取爬虫脚本文件并校验,然后把爬虫脚本文件中的规则字符串转换为jsonarray;s12:将jsonarray转化为脚本java对象;s13:解析脚本java对象中的爬虫规则,再将解析结果设置到脚本java对象中。进一步描述,在步骤s13中,使用递归解析来获取脚本内容对象中爬虫规则中的字段及字段的信息。所述字段的信息包括name信息、css信息、save信息、click信息、regex信息和type信息。进一步描述,在步骤s2中,获取字段中的匹配符,逐一对脚本内容对象中的标签的文本元素和标题元素进行匹配。进一步描述,在步骤s3中,所述的特征值为href值。进一步描述,在步骤s3中,在步骤s2中匹配成功后,将相应标签的href值存入待爬取的url队列中等待爬取。进一步描述,在步骤s5中,对url地址进行过滤匹配,通过模糊匹配变量来实现地址匹配。一种大数据网络爬虫分页选择系统,它包括:第一解析模块,用于解析爬虫脚本;第一匹配模块,用于获取匹配符,对爬虫脚本内容中的标签信息进行匹配;存储模块,用于将匹配成功的标签的特征值存入url队列中;获取模块,用于获取url队列中的url连接地址,校验url连接地址;第二匹配模块,用于获取校验后的url连接地址,进行地址匹配;第二解析模块,用于解析地址匹配成功的url地址的网页,获取分页信息。进一步描述,所述的一种大数据网络爬虫分页选择系统,它还包括:第一配置模块,用于配置分页组的定位符;第二配置模块,用于配置页面按钮的匹配符;第三配置模块,用于配置标签的属性元素;第四配置模块,用于配置标题元素;第五配置模块,用于配置文本元素。本发明的有益效果是:(1)本发明解决了在循环爬取数据时,因有些网页中的页面按钮html结构发生改变导致无法定位到相应的标签信息,造成不能循环爬取网页数据的问题,例如有些网页中的“下一页”html结构在用户点击几次“下一页”后会发生改变,数据结构改变后则不能通过原来的定位符,定位到“下一页”这个页面按钮的html标签,从而无法循环爬取网页数据。使用本发明后,可以直接地省略当前网页中“下一页”按钮的html结构是否发生改变这个可能存在的变量因素,通过将原有的定位单个组件(下一页按钮)html结构的方式扩大到定位到一列组件(含上一页、下一页、首页、尾页、数字页签等)的方式,在实际爬取过程中发现“下一页”按钮组件有可能会变化,但是整个分页组的结构是很少变化的,通过对分页组的精准定位,从而解决了网络爬虫爬取网页的时候解决有些网页中的“下一页”html结构在点击几次“下一页”后会发生改变的问题;(2)本发明直接省略了当前网页中的页面按钮的html结构是否发生改变这个可能造成整个爬虫系统无法循环爬取数据的因素,能够精准识别数据的分页标签,可以防止循环爬取数据过程中断,提升了网页大数据的爬取效率,提高了大数据分析处理效率;(3)本发明可以通过采用一种可配置匹配符,在一组选定的标签中自动匹配其属性,然后再返回其href值,有效地解决了在循环爬取网页中时有些网页中的“下一页”html结构在点击几次“下一页”后会发生改变的问题,可以精准定位下一页按钮的地址。附图说明图1为本发明方法的步骤流程图;图2为本发明系统的分页处理流程图;图3为本发明系统的脚本对象化结构示意图;图4为本发明系统的分页处理模块的结构示意图。具体实施方式下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。如图1所示,一种大数据网络爬虫分页选择方法,它包括以下步骤:s1:第一解析,解析爬虫脚本;爬虫脚本是爬虫引擎能够识别的一种网页定位符集合体的txt文件,其本质是带有一定格式的字符串文件,用于爬虫引擎运行中过滤与主题无关的链接,有选择地访问万维网上的网页与相关的链接并下载相关所需要的网页html信息。s2:第一匹配,获取匹配符,对爬虫脚本内容中的标签信息进行匹配;进一步表述,如图4所示,使用爬虫引擎分页处理模块处理s1步骤解析后的脚本详细内容对象,获取页面按钮显示字段的匹配符,逐一对脚本详细内容对象中的选定的a标签的文本元素(txt元素)和标题元素(title元素)进行匹配。s3:存储,将匹配成功的标签的特征值存入url队列中;将匹配成功后将该a标签的href值存入待爬取url队列中等待爬取;如图2所示。s4:获取及校验,获取url队列中的url连接地址,校验url连接地址;s5:第二匹配,获取校验后的url连接地址,进行地址匹配;如果匹配成功,则可以采用同一处理网页解析模块进行解析处理。地址匹配:对url地址进行过滤匹配,一种模糊匹配规则:例如:http://chengdu.customs.gov.cn/publish/portal130/tab70899/module193591/{page}.html是一个地址,匹配其中{}中的值是一种匹配变量。再例如:http://chengdu.customs.gov.cn/publish/portal130/tab70899/module193591/page1.html这个地址将会被该地址匹配成功;而http://chengdu.customs.gov.cn/publish/page2.html这个地址将不会被地址匹配器匹配。s6:第二解析,解析地址匹配成功的url地址的网页,获取分页信息。爬虫引擎网页解析模块将处理s5步骤中匹配成功的url地址的网页,对其进行解析分析页面元素获取分页信息后回到步骤s1进行处理,完成循环爬取。进一步描述,在步骤s6之后,还包括一个返回步骤s7,所述的返回步骤s7,在获取分页信息后,返回到步骤s2中,从而实现循环爬取。进一步描述,在步骤s1之前,还包括一个配置步骤s0,所述的配置步骤s0,用于配置爬虫脚本中的分页配置部分。所述的配置步骤s0,包括以下子步骤:第一配置,配置分页组的定位符;第二配置,配置页面按钮的匹配符;第三配置,配置标签的属性元素;第四配置,配置标题元素;第五配置,配置文本元素。所述的url队列为内存队列。所述的url队列为文件队列。其中,url队列为内存队列,例如一种简单的内存队列如redis的list链表结构,主要功能有push、pop等,用于存放url地址是线程安全的;url队列也可以是一种文件队列,它可以用于耗时较长的下载任务,在任务中途停止后,下次执行仍然从中止的url开始继续爬取。进一步描述,在步骤s1中,包括以下子步骤:s11:读取爬虫脚本文件并校验,然后把爬虫脚本文件中的规则字符串转换为jsonarray;s12:将jsonarray转化为脚本java对象;s13:解析脚本java对象中的爬虫规则,再将解析结果设置到脚本java对象中。再进一步表述,爬虫引擎先读取页面传来的脚本文件,然后进行基础校验后再把爬虫脚本文件中规则字符串转换为jsonarray,接着将jsonarray转化为爬虫引擎识别的脚本java对象,如图3所示,该对象含有脚本详细内容java对象以及另一个脚本java对象。递归解析脚本详细内容对象中的爬虫规则,解析脚本规则中各个关键字和关键字的属性信息,例如:name信息、css信息、save信息、click信息、regex信息、type信息等,然后将解析好的属性信息和字段重新设置到脚本详细内容对象中。进一步描述,在步骤s13中,使用递归解析来获取脚本内容对象中爬虫规则中的字段及字段的信息。所述字段的信息包括name信息、css信息、save信息、click信息、regex信息和type信息。进一步描述,在步骤s2中,获取字段中的匹配符,逐一对脚本内容对象中的标签的文本元素和标题元素进行匹配。进一步描述,在步骤s3中,所述的特征值为href值。进一步描述,在步骤s3中,在步骤s2中匹配成功后,将相应标签的href值存入待爬取的url队列中等待爬取。进一步描述,在步骤s5中,对url地址进行过滤匹配,通过模糊匹配变量来实现地址匹配。一种大数据网络爬虫分页选择系统,它包括:第一解析模块,用于解析爬虫脚本;第一匹配模块,用于获取匹配符,对爬虫脚本内容中的标签信息进行匹配;存储模块,用于将匹配成功的标签的特征值存入url队列中;获取模块,用于获取url队列中的url连接地址,校验url连接地址;第二匹配模块,用于获取校验后的url连接地址,进行地址匹配;第二解析模块,用于解析地址匹配成功的url地址的网页,获取分页信息。进一步描述,所述的一种大数据网络爬虫分页选择系统,它还包括:第一配置模块,用于配置分页组的定位符;第二配置模块,用于配置页面按钮的匹配符;第三配置模块,用于配置标签的属性元素;第四配置模块,用于配置标题元素;第五配置模块,用于配置文本元素。更进一步表达,在本发明的配置步骤中包括:分页组为页数标签的csspath地址,定位符为csspath定位符。csspath定位符是css选择器用于对网页中元素位置的排版进行像素级精确控制的路径,根据css路径则能对html页面中的元素实现一对一,一对多或者多对一的控制。xpath定位符为xml路径语言,它是一种用来确定xml(标准通用标记语言的子集)文档中某部分位置的语言。xpath基于xml的树状结构,提供在数据结构树中找寻节点的能力。xpath的提出的初衷是将其作为一个通用的、介于xpointer与xslt间的语法模型。但是,xpath很快的被开发者采用来当作小型查询语言。在本发明中,页面按钮的显示字段包括中文显示字段、英文显示字段和数字显示字段。进一步描述,爬虫引擎根据显示字段进行分页标签定位。如果页面按钮的匹配符和分页组中的标签按钮匹配成功,则该标签的属性元素作为页面按钮的分页路径加入待爬取的url队列中。选定的标签的属性元素为href元素。标题元素为分页组中的所有按钮的标签的标题属性值。第四配置模块,用于将标签的标题属性值字段与页面按钮的匹配符逐一匹配,如果过匹配成功,则获取该标签的href值。第五配置模块,用于将标签的文本属性值字段与页面按钮的匹配符逐一匹配,如果匹配成功,则获取该标签的href值。实施例:基于本发明的配置步骤及相应的配置模块,分页配置部分的爬虫脚本如下:1name:‘nextpage’,2css:‘#ess_ctrl193591_listc_aspnetpager>table>tbody>tr>td:nth-child(2)>a’,3type:‘list’,4regex:‘下一页’,5rule:{6name:‘href’,7keys:[{8name:‘href’,9type:‘pagelink’,10css:‘a’},{11name:‘title’,12type:‘text’,13css:‘a’},{14name:‘txt’,15type:‘text’,16css:‘a’}]}爬虫脚本如下:1name:‘liuyugaikuang’,2url:‘http://www.gdwater.gov.cn/yszx/ysgk/lygk’,3keys:[{4name:‘news’,5css:‘body’>div.wrap>div>div.glcom.clearfix>div.gl-right>ul>li,6type:‘list’,7rule:{8name:‘titile’,9keys:[{10name:‘tit’,11type:‘a’,12css:‘li>a’,13click:‘true’,}]}](1)新建爬虫任务,设置爬虫初始种子url、爬虫任务名称。初始种子url,爬虫引擎能够通过该url放问到的网页作为起点,再向深度、或广度一层层的扩展爬取。(2)配置爬虫策略,设置爬取一次还是循环爬取,可以设置每30分钟爬取一次或者1小时爬取1次等,设置爬虫线程每次请求间隔时间,可以设置1000毫秒、1500毫秒等。(3)配置网络爬虫脚本,本爬虫脚本是一种json格式的字符串,其页面与页面间的层级关系采用json格式中常见的嵌套格式,并且在爬虫引擎中则能对象化成jsonarray,如图3中所呈现的层级关系。进一步地,所述的步骤(3)包括子步骤:(31)配置“分页组”的csspath定位符,这里的分页组是一组选定标签a的集合,其业务含义为一系列页数标签(即a标签),例如爬虫脚本中第6行代码示意,它是以type为list的一组a标签的csspath地址。(32)配置“下一页”按钮匹配符,该匹配符是用于做智能分页的匹配符,例如在分页配置部分的爬虫脚本中第4行代码示意,“regex”标签其业务含义为页面按钮“下一页”标签的显示字段,这个字段根据具体网页中“下一页”的显示来具体配置,有可能是中文、英文、数字,爬虫引擎内部会根据这个字段进行最终的分页a标签定位。(33)配置href元素,该字段为分页组中所有按钮的a标签的href属性,如果“下一页”按钮匹配符和“分页组”中某一a标签按钮匹配成功后该a标的href属性将会作为“下一页”的分页路径加入爬虫引擎中待爬取url队列,例如在分页配置部分的爬虫脚本中第9行代码示意,该元素中的type为pagelink的href标签。(34)配置title元素,该字段为分页组中所有按钮的a标签的title的属性值,该字段将和“下一页”按钮匹配符逐一匹配,如果匹配成功,则获取该a标签的href值。(35)配置txt元素,该字段为分页组中所有按钮的a标签的txt的属性值,该字段将和“下一页”按钮匹配符逐一匹配,如过匹配成功,则获取该a标签的href值。(4)爬虫引擎读取页面传来的脚本文件,基础校验后把爬虫脚本文件中规则字符串转换为jsonarray。(5)将jsonarray转化为爬虫引擎识别的脚本java对象,该对象含有脚本详细内容java对象以及另一个脚本java对象,如图3所示。(6)递归解析(5)步骤中脚本详细内容对象中的爬虫规则,解析脚本规则中各个关键字和其属性信息,例如:name信息、css信息、save信息、click信息、regex信息、type信息等,然后将解析好的属性和字段设置回脚本详细内容对象中。(7)爬虫引擎分页处理器处理(6)步骤解析后的脚本详细内容对象,获取regex信息中的匹配符,逐一对脚本详细内容对象中的a标签的txt元素和title元素进行匹配。(8)匹配成功后将该a标签的href值存入待爬取url队列中等待爬取。(9)爬虫引擎获取(8)步骤中待爬取url队列中的url连接地址,并加以校验。(10)爬虫引擎获取(9)步骤中的地址后,交由下载器进行地址下载,下载完网页后,根据url地址匹配,匹配成功后将采取对应的网页解析器进行解析处理。(11)爬虫引擎网页解析器将会根据爬虫脚本中配置的清洗过滤条件,对其下载后的网页进行解析分析过滤,过滤出业务想要的页面元素,并且处理后入库。(12)步骤11处理完毕后返回(8)步骤进行循环爬取网页。本发明直接省略了当前网页中的页面按钮的html结构是否发生改变这个可能造成整个爬虫系统无法循环爬取数据的因素,实现了精准识别数据的分页标签,防止了循环爬取数据过程中断,提升了网页大数据的爬取效率,提高了大数据分析处理效率。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的方法、系统和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。本发明所揭露的方法、系统和模块,可以通过其它的方式实现。例如,以上所描述的实施例仅是示意性的,例如,所述模块的划分,可以仅仅是一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以说通过一些接口,系统或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。所述分立部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例的方案目的。另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、制度存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1