云计算系统的制作方法

文档序号:18834295发布日期:2019-10-09 04:37阅读:149来源:国知局
本发明涉及网络
技术领域
:,具体而言,涉及一种云计算系统。
背景技术
::网页抓取(也被成为网络数据提取或网页爬取)是指从网上获取数据,并将获取到的非结构化数据转换为结构化数据,最终将有效地结构化数据存储到本地计算机或数据库,以进行进一步地数据分析。相关技术中,网页抓取至少存在以下技术缺陷:(1)只能抓取网页,或仅具备简单地抓取新链的能力;(2)只能抓取html页面,无法抓取动态页面的有效数据;(3)抓取没有实现分布式化,仅仅基于单机或简单的同构集群,数据读取和解析效率低;(4)缺乏对抓取操作的出口压力控制,容易被目标网站发掘和封禁;(5)对应出口ip(internetprotocol,互联网协议)地址是中国本地运营商提供的ip地址段而言,容易被目标网站封禁;(6)各个公司和业务线的抓取系统无法构成平台,各自独立维护和开发的成本极高。技术实现要素:本发明正是基于上述技术问题至少之一,提出了一种新的云计算系统,通过云计算系统执行网页抓取和/或网站抓取,支持全网数据的抓取,具备极高地通用性,降低了维护和运营成本,提高了抓取有效数据的可靠性,其中,在抓取过程中实现精确地出口压力控制,另外,为用户提供了灵活编辑的扩容接口和缩容接口,最后,抓取数据被存储于hdfs中,数据交互压力小且读取效率高。有鉴于此,本发明的第一方面的实施例,提出了一种云计算系统,包括:应用程序界面接口,用于提供用户接口,以获取用户提交的抓取任务;种子库,连接至应用程序界面接口,用于预存抓取任务对应的资源定位符;任务生成器,连接至种子库,用于获取资源定位符,并将资源定位符投递至对应的爬虫模块;爬虫模块,连接至任务生成器,用于根据资源定位符抓取对应的网站数据和/或网页数据,其中,抓取任务能够被解析为网站抓取任务和/或网页抓取任务。在该技术方案中,通过将种子库应用到网页抓取和/或网站抓取中,弱化了网页抓取和网站抓取之间的区别,用户只需要简单的将所有待抓取的url(uniformresourcelocator,即本申请的资源定位符)异步投递到系统,而不需要考虑url的充分打散、正在抓取的网站堆积情况等,这种投递方式带来的直接变化是:(1)原来的选链操作只需要处理网站抓取任务,根据本发明的选链操作可以同时处理网站抓取任务和网页抓取任务,除非有用户自定义的选链逻辑,默认的选链逻辑不需要区分网站抓取任务和网页抓取任务,因为在选链操作上这二者没有区别。(2)选链操作的逻辑中需要加入抓取并发量和抓取频率的限制,以降低抓取过程被目标网站发现的可能性。(3)加入抓取并发量的限制后,为了尽可能利用抓取资源,可以将相关技术中的每分钟选链逻辑可以改为尽最大可能选链和投递策略,另外,保证网页选链任务优先级高于网站选链任务。其中,种子库为不同的抓取任务提供对应的映射表,以供任务生成器(即generator)根据映射表将抓取任务投递至对应的爬虫模块。值得特别指出的是,应用程序界面接口可以采用api聚合平台202接口的方式实现,以通用开放地方式为所有用户提供抓取服务,为了提高本申请的云计算系统的可靠性,可以设置禁止用户直接向爬虫模块投递抓取任务。在上述任一项技术方案中,优选地,爬虫模块包括spider爬虫模块和/或chrome爬虫模块,其中,chrome爬虫模块对于已渲染的网页和/或用户自定义页面进行javascript渲染操作后,再进行网页数据的抓取。在该技术方案中,通过设置爬虫模块包括spider爬虫模块和/或chrome爬虫模块,能够满足不同用户的抓取需求,具体地,需要使用javascript抓取和用户自定义页面操作逻辑的请求,全部由chrome爬虫进行处理,一般html页面的下载使用spider来完成。其中,使用spider爬虫模块是出于抓取性能方面的考虑,由于chrome爬虫模块在12核cpu的物理机上只能达到个位数的qps(queriespersecond,每秒查询率),而spider则是上千qps,而在实际抓取场景中,非javascript抓取占大比例,而且平台每天面对数亿级别的抓取任务,单纯使用chrome无法满足抓取量需求。值得特别指出的是,种子库为chrome抓取模块和spider抓取模块提供了两张表,chrome抓取模块和spider模块采用不同的generator进行选链,因为chrome抓取模块的出口压力控制方法不同于传统spider抓取模块的出口压力控制方法,可以在http(hypertexttransportprotocol,超文本传输协议)通用的代理模块实现chrome抓取模块的出口压力控制。另外,为了进一步优化任务生成器的投递效率,可以设置spider抓取模块向前保留网站抓取任务的拥堵信息,而对于非html页面来说,可以通过chrome抓取模块的浏览器内核,首先对非html页面执行javascript渲染操作后,再执行抓取操作,以获取有效的网页信息。在上述任一项技术方案中,优选地,还包括:新链发现模块,连接至爬虫模块和种子库,用于根据爬虫模块抓取的网站数据和/或网页数据解析抓取任务的链接深度,并根据链接深度更新抓取任务,以及将更新的抓取任务反馈至种子库。在该技术方案中,通过根据爬虫模块抓取的网站数据和/或网页数据解析抓取任务的链接深度,并根据链接深度更新抓取任务,以及将更新的抓取任务反馈至种子库,尤其是对于网站抓取任务而言,所谓的链接深度即深度优先遍历策略,是指爬虫模块会从起始页开始,一个链接接着一个链接跟踪抓取。在上述任一项技术方案中,优选地,新链发现模块包括:第一新链生成逻辑模块,用于根据爬虫模块抓取的网站数据的副本文件和/或网页数据的副本文件,实时地解析抓取任务的链接深度,根据连接深度更新抓取任务并实时反馈至种子库。在该技术方案中,通过设置云计算系统中包括上述第一新链生成逻辑模块,提供了一种实时性高的链接发现方案,也即根据爬虫模块抓取的网站数据的副本文件和/或网页数据的副本文件,实时地解析抓取任务的链接深度,根据连接深度更新抓取任务并实时反馈至种子库。在上述任一项技术方案中,优选地,还包括:分布式存储节点,连接至爬虫模块,用于根据预设目录对抓取的网页数据的元素信息和/或网站数据的元素信息进行分布式存储。在该技术方案中,通过在云计算系统中设置分布式存储节点,有效地提高了根据本发明的实施例的云计算系统的吞度量和容错性,具体地,分布式存储节点为分布式文件系统(hadoopdistributedfilesystem,简称hdfs),hdfs适合运行于通用且低价的硬件系统中,另外,hdfs也适于批量处理数据,能够为云计算系统提供很高的聚合数据带宽,例如,一个集群中支持数百个节点,一个集群中还能支持千万级别的文件,而且文件大小可以达到tb级别。在上述任一项技术方案中,优选地,新链发现模块还包括:第二新链生成逻辑模块,连接至分布式存储节点,用于按照预设周期离线解析存储于分布式存储节点的元素信息的特征值,以根据元素信息的特征值确定链接深度,根据连接深度更新抓取任务并反馈至种子库。在该技术方案中,通过在新链发现模块中设置第二新链生成逻辑膜,可以结合分布式存储节点,可以实现离线批量地进行新链发现操作。在上述任一项技术方案中,优选地,特征值包括框架参数、标识参数、标签参数、类型参数、文本参数和索引参数中的至少一种。在该技术方案中,为了获取抓取数据中的文字信息,需要根据抓取数据的特征值来直接获取文字信息,例如,网页数据的元素信息设有上述特征值,可以采用htmlget命令来直接获取网页数据中特征值对应的文字信息。在上述任一项技术方案中,优选地,还包括:解析模块,连接至分布式存储节点,用于根据预设解析算法对抓取的元素信息进行指定格式的转换,并将转换成指定格式的元素信息存储于分布式存储节点。在上述任一项技术方案中,优选地,解析模块连接至应用程序界面接口,应用程序界面接口还用于获取用户提交的解析算法,并作为预设解析算法存储于解析模块。在该技术方案中,通过设置解析模块连接至应用程序界面接口,应用程序界面接口还用于获取用户提交的解析算法,并作为预设解析算法存储于解析模块,提高了云计算系统的通用性。在上述任一项技术方案中,优选地,还包括:代理模块,连接至爬虫模块,用于收集和验证中国境外的超文本传输协议的代理爬虫模块,代理爬虫模块用于配合爬虫模块对属于中国境外的资源定位符进行网站数据和/或网页数据的抓取。在该技术方案中,通过在云计算系统中设置代理模块,提升了抓取中国境外网站数据和/或网页数据的隐蔽性,具体地:(1)收集免费的或收费的国内和国际http代理,并分类保存和管理。(2)使用透明的方式截获爬虫模块的http流量(截流),这样可以做到对爬虫模块透明和解耦,保证其通用性,目前可行的截流的方式包括so重写connect方法、修改iptable两种。(3)云计算系统向对外提供的接口符合标准代理协议,也是为了做到通用,任何使用http代理的模块都可以直接接入(不用截流)。(4)管理的http代理需要不断地进行补充,以验证其有效性。(5)代理模块本身应该提供重试机制,提高抓取结果的可靠性。(6)代理模块除了随机提供代理ip地址外,还支持高级的ip地址分配策略,例如:用户专用ip地址池和ip地址池允许刷新等。(7)代理模块不仅仅是用于代理服务,而且还是抓取数据的统一出口,因此,针对chrome爬虫模块的出口压力控制可以在代理模块中实现。在上述任一项技术方案中,优选地,代理模块还用于为chrome爬虫模块提供出口压力控制处理,其中,chrome爬虫模块支持抓取的资源定位符包含用户自定义逻辑算法。在上述任一项技术方案中,优选地,还包括:出口压力控制模块,连接至爬虫模块,用于根据预设的抓取并行度和/或抓取频率控制爬虫模块进行网站数据和/或网页数据的抓取。在该技术方案中,通过在云计算系统中设置出口压力控制模块,可以控制抓取过程的并行度和/或抓取频率,以降低被目标网站发现抓取过程的可能性。在上述任一项技术方案中,优选地,云计算系统运行于paas(platform-as-a-service)运营维护平台。在该技术方案中,通过设置云计算系统运行于paas运营维护平台,至少能实现以下技术效果:(1)服务实例的container化,container化服务实例目的是为了方便服务迁移、提供运行时环境和资源的隔离、可以采用后续的自动化部署、监控和服务维护,是实现paas的必要条件。另外,服务进程container化可以作为用户执行自定义代码逻辑的沙箱。目前可选的方案有docker,即开源的容器虚拟化平台。(2)一键式部署和方便的运维方法,即对外提供httpapi接口,同时提供网页端控制,允许用户进行应用创建、应该管理、应该下线等操作;(3)具有自动扩容和缩容的机制或开放可以实现类似功能的接口,paas平台应该提供自动扩容和缩容机制,可以完全由平台屏蔽实现,对外将策略定制接口暴露给用户。或者,平台对外暴露扩容和缩容的控制接口,具体的策略由用户自己实现;(4)灵活的服务实体生存周期,理想的paas平台能够提供几种服务模式:离线服务和在线服务。对于离线服务,服务实例一般为计算模块,没有常驻需求,对生命周期没有强制要求,在一定时间内完成计算任务即可。这种情况下只需要提供粗粒度的计算任务并发控制即可。对于在线服务,又可以细分为两种情况。一种是维护不定数量的实例数,如果实例是web服务,可以将请求根据实例压力分发到压力最小的实例上,在实例压力到达一定程度后自动扩充实例数。这种模式适用于公共web服务模块,比如不需要用户隔离的spider。另一种是维护的实例数等于当前的请求数,每个请求起一个单独的实例进行处理。这种模式适用于每个请求需要资源彼此隔离的场景,比如每个请求都是一个长时间的复杂选链逻辑;(5)由paas平台屏蔽服务发现实现,即paas平台由于服务实例container化,且由平台自动调度,对于在线服务而言,对外暴露服务的服务发现机制应该由paas平台实现;(6)完善的监控机制,即包括实例数监控,实例占用资源监控(cpu、内存、带宽),日志监控等。通过以上技术方案,通过云计算系统执行网页抓取和/或网站抓取,支持全网数据的抓取,具备极高地通用性,降低了维护和运营成本,提高了抓取有效数据的可靠性,其中,在抓取过程中实现精确地出口压力控制,另外,为用户提供了灵活编辑的扩容接口和缩容接口,最后,抓取数据被存储于hdfs中,数据交互压力小且读取效率高。附图说明图1示出了根据本发明的一个实施例的云计算系统的示意框图;图2示出了根据本发明的另一个实施例的云计算系统的示意框图;图3示出了根据本发明的实施例的云计算系统的数据交互示意图。具体实施方式为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用第三方不同于在此描述的第三方方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。实施例一图1示出了根据本发明的一个实施例的云计算系统的示意框图。图3示出了根据本发明的实施例的云计算系统的数据交互示意图。如图1和图3所示,根据本发明的一个实施例的云计算系统100,包括:应用程序界面接口102,用于提供用户接口,以获取用户提交的抓取任务;种子库104,连接至应用程序界面接口102,用于预存抓取任务对应的资源定位符;任务生成器106,连接至种子库104,用于获取资源定位符,并将资源定位符投递至对应的爬虫模块108;爬虫模块108,连接至任务生成器106,用于根据资源定位符抓取对应的网站数据和/或网页数据,其中,抓取任务能够被解析为网站抓取任务和/或网页抓取任务。在该技术方案中,通过将种子库104应用到网页抓取和/或网站抓取中,弱化了网页抓取和网站抓取之间的区别,用户只需要简单的将所有待抓取的url(uniformresourcelocator,即本申请的资源定位符)异步投递到系统,而不需要考虑url的充分打散、正在抓取的网站堆积情况等,这种投递方式带来的直接变化是:(1)原来的选链操作只需要处理网站抓取任务,根据本发明的选链操作可以同时处理网站抓取任务和网页抓取任务,除非有用户自定义的选链逻辑,默认的选链逻辑不需要区分网站抓取任务和网页抓取任务,因为在选链操作上这二者没有区别。(2)选链操作的逻辑中需要加入抓取并发量和抓取频率的限制,以降低抓取过程被目标网站发现的可能性。(3)加入抓取并发量的限制后,为了尽可能利用抓取资源,可以将相关技术中的每分钟选链逻辑可以改为尽最大可能选链和投递策略,另外,保证网页选链任务优先级高于网站选链任务。其中,种子库104为不同的抓取任务提供对应的映射表,以供任务生成器106(即generator)根据映射表将抓取任务投递至对应的爬虫模块108。值得特别指出的是,应用程序界面接口102可以采用api聚合平台202接口的方式实现,以通用开放地方式为所有用户提供抓取服务,为了提高本申请的云计算系统100的可靠性,可以设置禁止用户直接向爬虫模块108投递抓取任务。在上述任一项技术方案中,优选地,爬虫模块108包括spider爬虫模块1082和/或chrome爬虫模块1084,其中,chrome爬虫模块1084对于已渲染的网页和/或用户自定义页面进行javascript渲染操作后,再进行网页数据的抓取。在该技术方案中,通过设置爬虫模块108包括spider爬虫模块1082和/或chrome爬虫模块1084,能够满足不同用户的抓取需求,具体地,需要使用javascript抓取和用户自定义页面操作逻辑的请求,全部由chrome爬虫进行处理,一般html页面的下载使用spider来完成。其中,使用spider爬虫模块1082是出于抓取性能方面的考虑,由于chrome爬虫模块1084在12核cpu的物理机上只能达到个位数的qps(queriespersecond,每秒查询率),而spider则是上千qps,而在实际抓取场景中,非javascript抓取占大比例,而且平台每天面对数亿级别的抓取任务,单纯使用chrome无法满足抓取量需求。值得特别指出的是,种子库104为chrome抓取模块和spider抓取模块提供了两张表,chrome抓取模块和spider模块采用不同的generator进行选链,因为chrome抓取模块的出口压力控制方法不同于传统spider抓取模块的出口压力控制方法,可以在http(hypertexttransportprotocol,超文本传输协议)通用的代理模块116实现chrome抓取模块的出口压力控制。另外,为了进一步优化任务生成器106的投递效率,可以设置spider抓取模块向前保留网站抓取任务的拥堵信息,而对于非html页面来说,可以通过chrome抓取模块的浏览器内核,首先对非html页面执行javascript渲染操作后,再执行抓取操作,以获取有效的网页信息。在上述任一项技术方案中,优选地,还包括:新链发现模块110,连接至爬虫模块108和种子库104,用于根据爬虫模块108抓取的网站数据和/或网页数据解析抓取任务的链接深度,并根据链接深度更新抓取任务,以及将更新的抓取任务反馈至种子库104。在该技术方案中,通过根据爬虫模块108抓取的网站数据和/或网页数据解析抓取任务的链接深度,并根据链接深度更新抓取任务,以及将更新的抓取任务反馈至种子库104,尤其是对于网站抓取任务而言,所谓的链接深度即深度优先遍历策略,是指爬虫模块108会从起始页开始,一个链接接着一个链接跟踪抓取。在上述任一项技术方案中,优选地,新链发现模块110包括:第一新链生成逻辑模块1102,用于根据爬虫模块108抓取的网站数据的副本文件和/或网页数据的副本文件,实时地解析抓取任务的链接深度,根据连接深度更新抓取任务并实时反馈至种子库104。在该技术方案中,通过设置云计算系统100中包括上述第一新链生成逻辑模块,提供了一种实时性高的链接发现方案,也即根据爬虫模块108抓取的网站数据的副本文件和/或网页数据的副本文件,实时地解析抓取任务的链接深度,根据连接深度更新抓取任务并实时反馈至种子库104。在上述任一项技术方案中,优选地,还包括:分布式存储节点112,连接至爬虫模块108,用于根据预设目录对抓取的网页数据的元素信息和/或网站数据的元素信息进行分布式存储。在该技术方案中,通过在云计算系统100中设置分布式存储节点112,有效地提高了根据本发明的实施例的云计算系统100的吞度量和容错性,具体地,分布式存储节点112为分布式文件系统(hadoopdistributedfilesystem,简称hdfs),hdfs适合运行于通用且低价的硬件系统中,另外,hdfs也适于批量处理数据,能够为云计算系统100提供很高的聚合数据带宽,例如,一个集群中支持数百个节点,一个集群中还能支持千万级别的文件,而且文件大小可以达到tb级别。在上述任一项技术方案中,优选地,新链发现模块110还包括:第二新链生成逻辑模块1104,连接至分布式存储节点112,用于按照预设周期离线解析存储于分布式存储节点112的元素信息的特征值,以根据元素信息的特征值确定链接深度,根据连接深度更新抓取任务并反馈至种子库104。在该技术方案中,通过在新链发现模块110中设置第二新链生成逻辑膜,可以结合分布式存储节点112,可以实现离线批量地进行新链发现操作。在上述任一项技术方案中,优选地,特征值包括框架参数、标识参数、标签参数、类型参数、文本参数和索引参数中的至少一种。在该技术方案中,为了获取抓取数据中的文字信息,需要根据抓取数据的特征值来直接获取文字信息,例如,网页数据的元素信息设有上述特征值,可以采用htmlget命令来直接获取网页数据中特征值对应的文字信息。在上述任一项技术方案中,优选地,还包括:解析模块114,连接至分布式存储节点112,用于根据预设解析算法对抓取的元素信息进行指定格式的转换,并将转换成指定格式的元素信息存储于分布式存储节点112。在上述任一项技术方案中,优选地,解析模块114连接至应用程序界面接口102,应用程序界面接口102还用于获取用户提交的解析算法,并作为预设解析算法存储于解析模块114。在该技术方案中,通过设置解析模块114连接至应用程序界面接口102,应用程序界面接口102还用于获取用户提交的解析算法,并作为预设解析算法存储于解析模块114,提高了云计算系统100的通用性。在上述任一项技术方案中,优选地,还包括:代理模块116,连接至爬虫模块108,用于收集和验证中国境外的超文本传输协议的代理爬虫模块108,代理爬虫模块108用于配合爬虫模块108对属于中国境外的资源定位符进行网站数据和/或网页数据的抓取。在该技术方案中,通过在云计算系统100中设置代理模块116,提升了抓取中国境外网站数据和/或网页数据的隐蔽性,具体地:(1)收集免费的或收费的国内和国际http代理,并分类保存和管理。(2)使用透明的方式截获爬虫模块108的http流量(截流),这样可以做到对爬虫模块108透明和解耦,保证其通用性,目前可行的截流的方式包括so重写connect方法、修改ip地址table两种。(3)云计算系统100向对外提供的接口符合标准代理协议,也是为了做到通用,任何使用http代理的模块都可以直接接入(不用截流)。(4)管理的http代理需要不断地进行补充,以验证其有效性。(5)代理模块116本身应该提供重试机制,提高抓取结果的可靠性。(6)代理模块116除了随机提供代理ip地址外,还支持高级的ip地址分配策略,例如:用户专用ip地址池和ip地址池允许刷新等。(7)代理模块116不仅仅是用于代理服务,而且还是抓取数据的统一出口,因此,针对chrome爬虫模块1084的出口压力控制可以在代理模块116中实现。在上述任一项技术方案中,优选地,代理模块116还用于为chrome爬虫模块1084提供出口压力控制处理,其中,chrome爬虫模块1084支持抓取的资源定位符包含用户自定义逻辑算法。在上述任一项技术方案中,优选地,还包括:出口压力控制模块118,连接至爬虫模块108,用于根据预设的抓取并行度和/或抓取频率控制爬虫模块108进行网站数据和/或网页数据的抓取。在该技术方案中,通过在云计算系统100中设置出口压力控制模块118,可以控制抓取过程的并行度和/或抓取频率,以降低被目标网站发现抓取过程的可能性。在上述任一项技术方案中,优选地,云计算系统100运行于paas运营维护平台120。在该技术方案中,通过设置云计算系统100运行于paas运营维护平台120(后文简称paas平台),至少能实现以下技术效果:(1)服务实例的container化,container化服务实例目的是为了方便服务迁移、提供运行时环境和资源的隔离、可以采用后续的自动化部署、监控和服务维护,是实现paas平台的必要条件。另外,服务进程container化可以作为用户执行自定义代码逻辑的沙箱。目前可选的方案有docker。(2)一键式部署和方便的运维方法,即对外提供httpapi接口,同时提供网页端控制,允许用户进行应用创建、应该管理、应该下线等操作。(3)具有自动扩容和缩容的机制或开放可以实现类似功能的接口,paas平台应该提供自动扩容和缩容机制,可以完全由平台屏蔽实现,对外将策略定制接口暴露给用户。或者,平台对外暴露扩容和缩容的控制接口,具体的策略由用户自己实现。(4)灵活的服务实体生存周期,理想的paas平台能够提供几种服务模式:离线服务和在线服务。对于离线服务,服务实例一般为计算模块,没有常驻需求,对生命周期没有强制要求,在一定时间内完成计算任务即可,这种情况下只需要提供粗粒度的计算任务并发控制即可。对于在线服务,又可以细分为两种情况:一种是维护不定数量的实例数,如果实例是web服务,可以将请求根据实例压力分发到压力最小的实例上,在实例压力到达一定程度后自动扩充实例数,这种模式适用于公共web服务模块,比如不需要用户隔离的spider抓取模块;另一种是维护的实例数等于当前的请求数,每个请求起一个单独的实例进行处理。这种模式适用于每个请求需要资源彼此隔离的场景,比如每个请求都是一个长时间的复杂选链逻辑。(5)由paas平台屏蔽服务发现实现,即paas平台由于服务实例container化,且由平台自动调度,对于在线服务而言,对外暴露服务的服务发现机制应该由paas平台实现。(6)完善的监控机制,即包括实例数监控,实例占用资源监控(cpu、内存、带宽),日志监控等。实施例二图2示出了根据本发明的另一个实施例的云计算系统的示意框图。图3示出了根据本发明的实施例的云计算系统的数据交互示意图。如图2和图3所示,根据本发明的实施例的云计算系统200,包括:网页抓取子系统和网页解析子系统,两个子系统功能独立,数据流通过hdfs解耦,执行分离的任务管理系统。如图1和图3所示,网页抓取子系统通过应用程序界面接口102获取提交url和创建/删除任务,网页解析子系统通过应用程序界面接口102获取提交解析算法/应用,以及编辑解析算法/应用等操作请求。具体地,用户通过网页或api(applicationprograminterface,应用程序界面)聚合平台202提交的任务分为两部分:一是创建抓取任务,可以完成网页或网站的抓取和存储(hdfs)功能;二是如果用户需要使用平台的解析功能,则还需要创建解析任务,指定解析数据源(目前是hdfs,之后可能会支持其他更高时效性的存储系统)、解析结果存储位置、系统提供的或自定义的解析算法包等。(1)api聚合平台202是提供图1所示的应用程序界面接口102的服务封装,也即网页抓取子系统和网页解析子系统都可以单独对外提供服务,统一使用api聚合平台202对外开放http服务。(2)核心微服务包括:选链服务204、种子库服务206、抓取服务208和代理服务210。核心微服务对应的网页抓取子系统包括以下模块:种子库、默认选链模块、网页下载模块(即fetcher)、chrome爬虫模块、新链发现模块和代理模块。在本设计中,种子库被通用于网站抓取任务和网页抓取任务,这两者在种子库的使用上没有区别,只是选链时的优先级不同,通常预设网页抓取优先级高于网站抓取,网站抓取不再使用每分钟投递的方式,而是在generator的抓取并发控制功能下尽可能进行投递。这样的设计可以充分利用抓取云计算系统的抓取能力,使得每个用户的网面抓取任务和网站抓取任务都使用最大速度。参照设计思路中的种子库saas服务可行性分析,我们的种子库放弃隔离性和自由选链逻辑,只提供一种简单的遍历方式,不允许用户进行自由选链。因此,对于隔离性和自由选链的替代方案是:使用api聚合平台202平身的qps限制,防止用户对种子库的攻击,且不支持用户提交服务端脚本的查询方案;如果用户要使用自由选链,则由平台提供或用户自己实现单独的种子库+generator选链服务,平台开放spider投递接口,用户使用网页抓取的方式进行投递,服务由用户自行部署,或使用paas平台进行投递。网页抓取子系统对外接口只开放在种子库之前,原则上不允许用户直接向spider提交url。另外,为了实现generator部分的最优化投递策略,spider向前暴露各网站抓取任务的拥塞情况。在实现具体抓取服务208时,细分为两个模块:spider爬虫服务和chrome爬虫范围,其中,需要使用javascript抓取和用户自定义页面操作逻辑的请求,全部由chrome爬虫服务处理,一般页面的下载使用spider服务来完成。使用spider爬虫服务是出于性能方面考虑,chrome爬虫服务在12核cpu的物理机上只能达到个位数的qps,而spider爬虫服务则是上千。在实际抓取场景中,非javascript抓取占大比例,而且云计算系统每天面对亿级别的抓取量,单纯使用chrome爬虫服务无法满足抓取量需求。使用chrome爬虫服务和spider爬虫服务完全是两套独立的系统,在种子库部分就已经进行了功能分化。种子库为chrome爬虫服务和spider爬虫服务提供了两张表,chrome爬虫服务使用和spider爬虫服务不同的generator进行选链,因为chrome爬虫服务的出口压力控制方法不同于传统spider爬虫服务的出口压力控制方法,预计在http通用代理部分实现。代理服务210是平台流量的出口,这一层流量控制过程如下:收集和验证国内外的http、https代理;为每个抓取请求随机分配可靠的抓取代理;为chrome爬虫服务提供出口压力控制。chrome爬虫服务和spider爬虫服务的下游对接公共服务,包括:配置中心212、消息队列214和crontab服务216,其中,配置中心212用于存储出口压力控制相关的参数(存储于图3所示的配置文件302中),譬如,抓取并发度和抓取频率等。消息队列214用于存放待抓取的url队列,首先,爬虫选取一部分精心挑选的种子url;将这些url放入待抓取url队列,从待抓取url队列中取出待抓取在url,解析对应的dns(domainnameserver,域名服务器),并且得到主机的ip地址,并将url对应的原始网页下载和存储,最后,将这些url放进已抓取url队列。其中,下载的原始网页直接存储在hdfs中,同时进行新链的发现。关于新链发现逻辑,有两种方案:原始网页的副本传输到新链发现模块110进行实时的新链发现、在网页解析子系统中创建离线的新链发现模块110对hdfs上的数据进行离线批量处理发现新链。crontab服务216作为任务发生器的前置服务,同时,也属于linux系统的内置服务,用于控制generator对抓取任务的分配过程。网页解析子系统是基于底层paas平台构建的一套功能完整、与网页抓取子系统天然对接的解析系统。网页解析子系统以paas服务的方式对外提供服务,用户在系统中创建解析模板之后,定期执行离线的批量解析任务,将hdfs中的数据解析成用户自定义的格式,并存储到hdfs上。(4)云计算系统200的基础设施由paas运营维护平台120(即paas平台)实现,由于网页抓取和/或网站抓取本来就相当于对动态网页进行镜像处理,因此,其作为其他子系统的实例运维平台,对外开放如下的接口:a创建镜像接口;b删除镜像接口;c管理镜像信息接口;d镜像提供服务的调用接口,对于每个已注册的镜像,提供一个http接口,用户调用这个http接口后可以调用相应的服务。本发明实施例方法中的步骤可根据实际需要进行顺序调整、合并和删减。本发明实施例终端中的单元可根据实际需要进行合并、划分和删减。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质包括只读存储器(read-onlymemory,rom)、随机存储器(randomaccessmemory,ram)、可编程只读存储器(programmableread-onlymemory,prom)、可擦除可编程只读存储器(erasableprogrammablereadonlymemory,eprom)、一次可编程只读存储器(one-timeprogrammableread-onlymemory,otprom)、电子抹除式可复写只读存储器(electrically-erasableprogrammableread-onlymemory,eeprom)、只读光盘(compactdiscread-onlymemory,cd-rom)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。以上结合附图详细说明了本发明的技术方案,考虑到相关技术中抓取技术的诸多缺陷,本发明提出了一种云计算系统,通过云计算系统执行网页抓取和/或网站抓取,支持全网数据的抓取,具备极高地通用性,降低了维护和运营成本,提高了抓取有效数据的可靠性,其中,在抓取过程中实现精确地出口压力控制,另外,为用户提供了灵活编辑的扩容接口和缩容接口,最后,抓取数据被存储于hdfs中,数据交互压力小且读取效率高。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1