一种支持在线编程的爬虫抓取数据方法、装置及系统的制作方法

文档序号:10655105阅读:378来源:国知局
一种支持在线编程的爬虫抓取数据方法、装置及系统的制作方法
【专利摘要】本发明实施例公开了一种支持在线编程的爬虫抓取数据方法、装置及系统,解决了目前将页面结构模板化的方案,虽然管理上更方便,但是模板功能太弱,不能够应对复杂的网络请求和页面结构,而且写模板的时候通常需要在本地不断调试正确后再发布到线上,再者对付带纯文本等无HTML结构的页面,导致的模板方式准确定位目标数据困难的技术问题。本发明实施例支持在线编程的爬虫抓取数据方法包括:将封装好的爬虫接口注入到预置的宿主环境中进行解析;将爬虫脚本的编写部分封装为基于宿主环境的可编辑模块;通过可编辑模块获取到在线编程后的脚本,并对脚本进行解析与执行;根据执行的脚本,通过爬虫接口抓取对应的网页数据。
【专利说明】
一种支持在线编程的爬虫抓取数据方法、装置及系统
技术领域
[0001]本发明涉及计算机技术领域,尤其涉及一种支持在线编程的爬虫抓取数据方法、装置及系统。
【背景技术】
[0002]随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(Search Engine ),例如传统的通用搜索引擎AltaVista,Yahoo和Google等,作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性,因此,网络爬虫应运而生,网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。
[0003]在爬虫抓取大量网站数据中,通常每个网站的页面结构和技术方案都有所不同(比如有的网站利用Ajax+JSON技术渲染页面,有的是静态HTML),并且每个网站的文章随时可能会被编辑者更改页面结构(如添加广告,二维码等多余数据在文章)而导致写好的爬虫无法抓取正确的内容。通常WEB类的爬虫又都用程序语言写死,一经部署就不能随意变更,随时更改代码;目前业内的一些解决方案有:将页面结构模板化。虽然管理上更方便,但是模板功能太弱,不能够应对复杂的网络请求和页面结构,而且写模板的时候通常需要在本地不断调试正确后再发布到线上,再者对付带纯文本等无HTML结构的页面,模板方式准确定位目标数据很困难。

【发明内容】

[0004]本发明实施例提供的一种支持在线编程的爬虫抓取数据方法、装置及系统,解决了目前将页面结构模板化的方案,虽然管理上更方便,但是模板功能太弱,不能够应对复杂的网络请求和页面结构,而且写模板的时候通常需要在本地不断调试正确后再发布到线上,再者对付带纯文本等无HTML结构的页面,导致的模板方式准确定位目标数据困难的技术问题。
[0005]本发明实施例提供的一种支持在线编程的爬虫抓取数据方法,包括:
[0006]将封装好的爬虫接口注入到预置的宿主环境中进行解析;
[0007]将爬虫脚本的编写部分封装为基于所述宿主环境的可编辑模块;
[0008]通过所述可编辑模块获取到在线编程后的脚本,并对所述脚本进行解析与执行;
[0009]根据执行的所述脚本,通过所述爬虫接口抓取对应的网页数据。
[0010]优选地,将封装好的爬虫接口注入到预置的宿主环境中进行解析之前还包括:
[0011]向所述宿主环境对应的宿主语言进行所述爬虫接口的封装处理。
[0012]优选地,将封装好的爬虫接口注入到预置的宿主环境中进行解析具体包括:
[0013]将封装好的爬虫接口注入到所述宿主环境中的与所述宿主语言的脚本引擎进行解析。
[0014]优选地,通过所述可编辑模块获取到在线编程后的脚本,并对所述脚本进行解析与执行之前还包括:
[0015]将在线编程后的所述脚本通过所述可编辑模块加载并进行初次编译;
[0016]对所述脚本的内容进行哈希运算,将脚本初次编译后的编译结果进行缓存。
[0017]优选地,通过所述可编辑模块获取到在线编程后的脚本,并对所述脚本进行解析与执行具体包括:
[0018]根据获取到的启动指令或预置启动时间启动在所述脚本引擎中的爬虫进程,并从缓存中调用所述编译结果;
[0019]执行所述编译结果。
[0020]本发明实施例提供的一种支持在线编程的爬虫抓取数据装置,包括:
[0021]第一解析模块,用于将封装好的爬虫接口注入到预置的宿主环境中进行解析;
[0022]第一封装模块,用于封装将爬虫脚本的编写部分封装为基于所述宿主环境的可编辑模块;
[0023]第二解析模块,用于通过所述可编辑模块获取到在线编程后的脚本,并对所述脚本进行解析与执行;
[0024]抓取模块,用于根据执行的所述脚本,通过所述爬虫接口抓取对应的网页数据。
[0025]优选地,所述的支持在线编程的爬虫抓取数据装置还包括:
[0026]第二封装模块,用于向所述宿主环境对应的宿主语言进行所述爬虫接口的封装处理。
[0027]优选地,第一解析模块,具体用于将封装好的爬虫接口注入到所述宿主环境中的与所述宿主语言的脚本引擎进行解析。
[0028]优选地,所述的支持在线编程的爬虫抓取数据装置还包括:
[0029]编译模块,用于将在线编程后的所述脚本通过所述可编辑模块加载并进行初次编译;
[0030]保存模块,用于对所述脚本的内容进行哈希运算,将脚本初次编译后的编译结果进行缓存。
[0031 ]优选地,第二解析模块具体包括:
[0032]调用子模块,用于根据获取到的启动指令或预置启动时间启动在所述脚本引擎中的爬虫进程,并从缓存中调用所述编译结果;
[0033]执行子模块,用于执行所述编译结果。
[0034]本发明实施例提供的一种支持在线编程的爬虫抓取数据系统,其特征在于,包括:
[0035]浏览器客户端,以及本发明实施例中提及的任意一种所述的支持在线编程的爬虫抓取数据装置;
[0036]所述支持在线编程的爬虫抓取数据装置与所述浏览器客户端通信连接;
[0037]所述浏览器客户端,用于将在线编程的脚本内容发送给所述支持在线编程的爬虫抓取数据装置。
[0038]从以上技术方案可以看出,本发明实施例具有以下优点:
[0039]本发明实施例提供的一种支持在线编程的爬虫抓取数据方法、装置及系统,其中,支持在线编程的爬虫抓取数据方法包括:将封装好的爬虫接口注入到预置的宿主环境中进行解析;将爬虫脚本的编写部分封装为基于宿主环境的可编辑模块;通过可编辑模块获取到在线编程后的脚本,并对脚本进行解析与执行;根据执行的脚本,通过爬虫接口抓取对应的网页数据。本实施例中,通过将封装好的爬虫接口注入到预置的宿主环境中进行解析,再将爬虫脚本的编写部分封装为基于宿主环境的可编辑模块,然后通过可编辑模块获取到在线编程后的脚本,并对脚本进行解析与执行,最后根据执行的脚本,通过爬虫接口抓取对应的网页数据,实现了通过封装并形成的一套专门用于爬虫的脚本语言,简化抓取逻辑,能够支持动态添加抓取源,通过浏览器在线编写爬虫脚本,在线调试,解决了目前将页面结构模板化的方案,虽然管理上更方便,但是模板功能太弱,不能够应对复杂的网络请求和页面结构,而且写模板的时候通常需要在本地不断调试正确后再发布到线上,再者对付带纯文本等无HTML结构的页面,导致的模板方式准确定位目标数据困难的技术问题。
【附图说明】
[0040]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
[0041 ]图1为本发明实施例提供的一种支持在线编程的爬虫抓取数据方法的一个实施例的流程示意图;
[0042]图2为本发明实施例提供的一种支持在线编程的爬虫抓取数据方法的另一个实施例的流程示意图;
[0043]图3为本发明实施例提供的一种支持在线编程的爬虫抓取数据装置的一个实施例的结构示意图;
[0044]图4为本发明实施例提供的一种支持在线编程的爬虫抓取数据装置的另一个实施例的结构示意图;
[0045]图5为本发明实施例提供的一种支持在线编程的爬虫抓取数据系统的一个实施例的结构示意图;
[0046]图6为爬虫脚本执行工作原理图;
[0047]图7为支持在线编程的爬虫抓取数据系统使用示意图;
[0048]图8(a)和(b)为浏览器客户端界面示意图。
【具体实施方式】
[0049]本发明实施例提供的一种支持在线编程的爬虫抓取数据方法、装置及系统,解决了目前将页面结构模板化的方案,虽然管理上更方便,但是模板功能太弱,不能够应对复杂的网络请求和页面结构,而且写模板的时候通常需要在本地不断调试正确后再发布到线上,再者对付带纯文本等无HTML结构的页面,导致的模板方式准确定位目标数据困难的技术问题。
[0050]网络爬虫:通过WEB技术在网络上进行抓取数据的一种计算机程序。
[0051]Ajax技术:http异步数据加载技术,能够使浏览器主线程不被阻塞而发出异步请求获取数据或调整局部页面。
[0052]脚本:使用一种特定的描述语言,根据一定的格式编写的可执行文件,源文件以存文本方式保存,脚本程序在执行时时通过解释器翻译成计算机课识别的命令,并按程序顺序来执行。
[0053]JS0N:—种轻量级的数据交换格式,易于人阅读,并且也易于机器解析.用于不同计算设备或应用程序中的数据交互。
[0054]正则表达式:一种计算机语言表示法,使用单个字符串来描述,匹配一些列符合某个句法规则的字符串。正则表达式通常被用用来检索获取,或者替换那些符合某个模式的文本。
[0055]CSS选择器:CSS是WEB层叠样式表,用以表示HTML表现样式的文件,CSS选择器利用简洁易懂的语法定义匹配符合的HTML结点集合。
[0056]HTTP代理:HTTP功能支持“直接连接”和通过“HTTP代理”形式的连接,HTTP代理是通过HTTP代理服务器(中转站)获取资源,然后返回用户机,通常通过HTTP代理访问可以起到突破IP自身限制,隐藏IP并访问目标资源的目的。
[0057]HASH(哈希)算法:将任意长度的二进制值通过特定运算映射为较短的长度固定的二进制值.在原文中无论更改任何数据,随后的Hash都会产生不同的值.常用于数据完整性校验和快速查询,常用的Hash算法有MD5,SHAl等。
[0058]为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0059]请参阅图1,本发明实施例提供的一种支持在线编程的爬虫抓取数据方法的一个实施例包括:
[0060]101、将封装好的爬虫接口注入到预置的宿主环境中进行解析;
[0061]本实施例中,当需要使用通过在线编写的网络爬虫抓取网页数据进行动态抓取时,首先需要将封装好的爬虫接口注入到预置的宿主环境中进行解析。
[0062]102、将爬虫脚本的编写部分封装为基于宿主环境的可编辑模块;
[0063]当将封装好的爬虫接口注入到预置的宿主环境中进行解析之后,需要将爬虫脚本的编写部分封装为基于宿主环境的可编辑模块。
[0064]103、通过可编辑模块获取到在线编程后的脚本,并对脚本进行解析与执行;
[0065]当将爬虫脚本的编写部分封装为基于宿主环境的可编辑模块之后,需要通过可编辑模块获取到在线编程后的脚本,并对脚本进行解析与执行。
[0066]可以理解的是,脚本的内容是纯文本,可直接保存进数据库,不是直接存编译后的内容进数据库,如果直接放编译后的内容,以后无法还原成文本方便再次修改。
[0067 ] 104、根据执行的脚本,通过爬虫接口抓取对应的网页数据。
[0068]当通过可编辑模块获取到在线编程后的脚本,并对脚本进行解析与执行之后,需要根据执行的脚本,通过爬虫接口抓取对应的网页数据。
[0069]本实施例中,通过将封装好的爬虫接口注入到预置的宿主环境中进行解析,再将爬虫脚本的编写部分封装为基于宿主环境的可编辑模块,然后通过可编辑模块获取到在线编程后的脚本,并对脚本进行解析与执行,最后根据执行的脚本,通过爬虫接口抓取对应的网页数据,实现了通过封装并形成的一套专门用于爬虫的脚本语言,简化抓取逻辑,能够支持动态添加抓取源,通过浏览器在线编写爬虫脚本,在线调试,解决了目前将页面结构模板化的方案,虽然管理上更方便,但是模板功能太弱,不能够应对复杂的网络请求和页面结构,而且写模板的时候通常需要在本地不断调试正确后再发布到线上,再者对付带纯文本等无HTML结构的页面,导致的模板方式准确定位目标数据困难的技术问题。
[0070]上面是对支持在线编程的爬虫抓取数据方法的过程进行详细的描述,下面将对附加过程进行详细的描述,请参阅图2,本发明实施例提供的一种支持在线编程的爬虫抓取数据方法的另一个实施例包括:
[0071]201、向宿主环境对应的宿主语言进行爬虫接口的封装处理;
[0072]本实施例中,当需要使用通过在线编写的网络爬虫抓取网页数据进行动态抓取时,首先需要向宿主环境对应的宿主语言进行爬虫接口的封装处理。
[0073]202、将封装好的爬虫接口注入到宿主环境中的与宿主语言的脚本引擎进行解析;
[0074]当向宿主环境对应的宿主语言进行爬虫接口的封装处理之后,需要将封装好的爬虫接口注入到宿主环境中的与宿主语言的脚本引擎进行解析。
[0075]203、将在线编程后的脚本通过可编辑模块加载并进行初次编译;
[0076]当将封装好的爬虫接口注入到宿主环境中的与宿主语言的脚本引擎进行解析之后,需要将在线编程后的脚本通过可编辑模块加载并进行初次编译。
[0077]204、对脚本的内容进行哈希运算,将脚本初次编译后的编译结果进行缓存;
[0078]当将在线编程后的脚本通过可编辑模块加载并进行初次编译之后,需要对脚本的内容进行哈希运算,将脚本初次编译后的编译结果进行缓存。
[0079]可以理解的是,脚本的内容是纯文本,直接保存进数据库,不是直接存编译后的内容进数据库,如果直接放编译后的内容,以后无法还原成文本方便再次修改,因此,数据库取出来的内容,对脚本内容进行编译,然后计算内容的哈希值,通过哈希值缓存编译结果,只要内容不再改变,哈希值就不变,这样就不必每次都从数据库获取内容,而是直接从缓存读取编译结果运行。
[0080]205、将爬虫脚本的编写部分封装为基于宿主环境的可编辑模块;
[0081 ]当对脚本的内容进行哈希运算,将脚本初次编译后的编译结果进行缓存之后,需要将爬虫脚本的编写部分封装为基于宿主环境的可编辑模块。
[0082]206、根据获取到的启动指令或预置启动时间启动在脚本引擎中的爬虫进程,并从缓存中调用编译结果;
[0083]当将爬虫脚本的编写部分封装为基于宿主环境的可编辑模块之后,需要根据获取到的启动指令或预置启动时间启动在脚本引擎中的爬虫进程,并从缓存中调用编译结果。
[0084]207、执彳丁编译结果;
[0085]当根据获取到的启动指令或预置启动时间启动在脚本引擎中的爬虫进程,并从缓存中调用编译结果之后,需要执行编译结果。
[0086]208、根据执行的脚本,通过爬虫接口抓取对应的网页数据。
[0087]当执行编译结果之后,需要根据执行的脚本,通过爬虫接口抓取对应的网页数据。
[0088]如图6所示,下面以一具体应用场景进行描述,应用例包括:
[0089]I)首先通过向宿主语言(通常是WEB开发语言,如:Java)提供爬虫引擎接口来实现宿主语言的调用,该接口简化了原生HTTP等请求和HTML页面解析的复杂度,形成更加易用而有爬虫针对性的功能,爬虫的接口的具体实现可以由第三方语言或工具实现,也可以由宿主语言Java进行实现,(本系统利用Java实现了爬虫引擎)。
[0090]2)其次,通过将封装好的爬虫API注入到宿主语言的脚本引擎执行环境进行解析,由于Java原生支持注册JavaScript的脚本引擎,所以脚本环境可以注册宿主语言的任何功能,本爬虫脚本也可以自由扩展来自宿主语言或者第三方API的各种特性,(爬虫引擎本身也是作为特殊的第三方,以API方式注入脚本引擎来实现)。
[0091 ] 3)接着,搭建WEB环境,将脚本内容的编写部分,封装成WEB环境的可编辑模块。提供在线编程,在线调试的功能。
[0092]WEB模块还提供保存内容的接口,同时向脚本引擎环境进行注册,让脚本环境也支持调用数据保存功能。
[0093]4)将WEB页面编写的脚本引擎通过数据库进行保存,由前台主动或者后台定时器定时启动爬虫线程,爬虫线程启动后,从数据库获取爬虫脚本进行解析并执行。
[0094]为了提升解析效率,脚本只是初次加载使进行编译,然后根据脚本内容进行哈希运算来缓存编译结果,后续调用可以直接读取编辑结果运行。因此,运行效率媲美原生API调用效果。
[0095]5)用户通过浏览器在操作界面上进行可视化编程操作,进行在线编程,WEB系统提供在线调试,在线预览等功能,最终利用在脚本环境注册好的爬虫API,数据保存API进行编码好指令脚本,保存入数据库。
[0096]6)由定时器或者用户在操作界面主动触发抓取命令,然后让后台线程根据数据库保存的脚本内容分别执行抓取,抽取,过滤和数据保存等操作指令。
[0097]如图8(a)和(b)所示,爬虫脚本可以让多台机(多实例)读取运行,可以同时抓取多个网站,自动多机URL排重,在浏览器界面可以是包括有源站名称、源站地址、所属分类、采集端口、采集脚本,在采集脚本部分为脚本编写部分,在线编写抓取脚本,通过在下方的“测试脚本”触发键,可以是直接预览抓取结果,抓取结果可以是通过在下方的“切换结果集显示格式”触发键,查看HTML页或者源码,在线实时预览抓取内容,调试抓取代码和过滤抓取结果,支持代码高亮,代码提示。
[0098]需要说明的是,本实施例利用WEB技术提供在线编程界面,提供给用户操作网络爬虫,用户通过浏览器就能操作,解决本地安装各种爬虫环境的复杂和痛苦,并且可通过互联网随时随地操作爬,管理和维护方便;可以在线启动爬虫,添加定时爬虫任务,自带爬虫统计等功能,可定时执行爬虫任务,自动URL排重,标题排重,解决重复抓取的问题;封装了一套专用于爬虫的API,通过在线编程时调用API完成爬虫任务,可在线调试和修改抓取代码,在线预览抓取结果,随时纠正抓取结果,提供在线编程错误提示,解决以往爬虫无法随时改变抓取逻辑,抓取对象页面变更后无法及时处理,无法在线实时调试,实时编程,及时解决问题的困难;用类CSS选择器和JavaScript的语法进行编程,支持JavaScript语言的基本特性,以及正则表达式,结合宿主语言的脚本解析引擎进行无限扩展,解决了编写爬取脚本困难,根治模板化爬虫抓取方式不易于扩展的毛病,不易于调试的毛病;可以配置代理触发器,在抓取过程中如果发现抓取内容符合触发条件的情况下(比如提示输入验证码)会自动切换HTTP代理重新进行抓取,解决了自身IP限制,伪装成正常浏览器浏览,突破目标网站防抓取的限制。
[0099]本实施例中,通过将封装好的爬虫接口注入到预置的宿主环境中进行解析,再将爬虫脚本的编写部分封装为基于宿主环境的可编辑模块,然后通过可编辑模块获取到在线编程后的脚本,并对脚本进行解析,最后执行解析后的脚本,并通过爬虫接口抓取对应的网页数据,通过封装并形成的一套专门用于爬虫的脚本语言,简化抓取逻辑.能够支持动态添加抓取源,通过浏览器在线编写爬虫脚本,在线调试,解决了目前将页面结构模板化的方案,虽然管理上更方便,但是模板功能太弱,不能够应对复杂的网络请求和页面结构,而且写模板的时候通常需要在本地不断调试正确后再发布到线上,再者对付带纯文本等无HTML结构的页面,模板方式准确定位目标数据困难的技术问题,以及通过WEB操作易于远程统一管理和维护所有网站的爬虫,随时随地修改,随时完善爬虫逻辑,在线调试,在线预览爬取结果,直观友好,降低抓取错误率,提高爬虫应变能力,定向抓取,定向过滤,使抓取结果更加友好专业,减少后期运营(编辑,审核)的成本,突破IP限制,解决抓取限制。
[0100]请参阅图3,本发明实施例中提供的一种支持在线编程的爬虫抓取数据装置的一个实施例包括:
[0101]第一解析模块301,用于将封装好的爬虫接口注入到预置的宿主环境中进行解析;
[0102]第一封装模块302,用于封装将爬虫脚本的编写部分封装为基于宿主环境的可编辑模块;
[0103]第二解析模块303,用于通过可编辑模块获取到在线编程后的脚本,并对脚本进行解析与执行;
[0104]抓取模块304,用于根据执行的脚本,通过爬虫接口抓取对应的网页数据。
[0105]本实施例中,通过第一解析模块301将封装好的爬虫接口注入到预置的宿主环境中进行解析,第一封装模块302再将爬虫脚本的编写部分封装为基于宿主环境的可编辑模块,然后第二解析模块303通过可编辑模块获取到在线编程后的脚本,并对脚本进行解析与执行,最后抓取模块304根据执行的脚本,通过爬虫接口抓取对应的网页数据,通过封装并形成的一套专门用于爬虫的脚本语言,简化抓取逻辑.能够支持动态添加抓取源,通过浏览器在线编写爬虫脚本,在线调试,解决了目前将页面结构模板化的方案,虽然管理上更方便,但是模板功能太弱,不能够应对复杂的网络请求和页面结构,而且写模板的时候通常需要在本地不断调试正确后再发布到线上,再者对付带纯文本等无HTML结构的页面,模板方式准确定位目标数据困难的技术问题。
[0106]上面是对支持在线编程的爬虫抓取数据装置的各单元进行详细的描述,下面将对附加单元和子单元进行详细的描述,请参阅图4,本发明实施例中提供的一种支持在线编程的爬虫抓取数据装置的另一个实施例包括:
[0107]第二封装模块401,用于向宿主环境对应的宿主语言进行爬虫接口的封装处理。
[0108]第一解析模块402,用于将封装好的爬虫接口注入到预置的宿主环境中进行解析,第一解析模块402,具体用于将封装好的爬虫接口注入到宿主环境中的与宿主语言的脚本引擎进行解析。
[0109]第一封装模块403,用于封装将爬虫脚本的编写部分封装为基于宿主环境的可编辑模块;
[0110]编译模块404,用于将在线编程后的脚本通过可编辑模块加载并进行初次编译;
[0111]保存模块405,用于对脚本的内容进行哈希运算,将脚本初次编译后的编译结果进行缓存。
[0112]第二解析模块406,用于通过可编辑模块获取到在线编程后的脚本,并对脚本进行解析;
[0113]第二解析模块406具体包括:
[0114]调用子模块4061,用于根据获取到的启动指令或预置启动时间启动在脚本引擎中的爬虫进程,并从缓存中调用编译结果调用编译结果;
[0115]执行子模块4062,用于执行编译结果。
[0116]抓取模块407,用于执行解析后的脚本,并通过爬虫接口抓取对应的网页数据。
[0117]本实施例中,通过第一解析模块402将封装好的爬虫接口注入到预置的宿主环境中进行解析,第一封装模块403再将爬虫脚本的编写部分封装为基于宿主环境的可编辑模块,然后第二解析模块406通过可编辑模块获取到在线编程后的脚本,并对脚本进行解析与执行,最后抓取模块407根据执行的脚本,通过爬虫接口抓取对应的网页数据,通过封装并形成的一套专门用于爬虫的脚本语言,简化抓取逻辑.能够支持动态添加抓取源,通过浏览器在线编写爬虫脚本,在线调试,解决了目前将页面结构模板化的方案,虽然管理上更方便,但是模板功能太弱,不能够应对复杂的网络请求和页面结构,而且写模板的时候通常需要在本地不断调试正确后再发布到线上,再者对付带纯文本等无HTML结构的页面,模板方式准确定位目标数据困难的技术问题,以及通过WEB操作易于远程统一管理和维护所有网站的爬虫,随时随地修改,随时完善爬虫逻辑,在线调试,在线预览爬取结果,直观友好,降低抓取错误率,提高爬虫应变能力,定向抓取,定向过滤,使抓取结果更加友好专业,减少后期运营(编辑,审核)的成本,突破IP限制,解决抓取限制。
[0118]请参阅图5,本发明实施例中提供的一种支持在线编程的爬虫抓取数据系统的一个实施例包括:
[0119]浏览器客户端51,以及图3和图4中提及的支持在线编程的爬虫抓取数据装置52,浏览器客户端51的界面示意图如图8(a)和(b)所示;
[0120]支持在线编程的爬虫抓取数据装置52与浏览器客户端51通信连接;
[0121]浏览器客户端51,用于将在线编程的脚本内容发送给支持在线编程的爬虫抓取数据装置52。
[0122]图5建立了一个支持在线编程的爬虫系统,并且封装并形成了一套专门用于爬虫的脚本语言,简化抓取逻辑,能够支持动态添加抓取源,通过浏览器在线编写爬虫脚本,在线调试,在线预览抓取结果,编辑器还支持代码高亮,爬虫引擎支持动态切换HTTP代理突破防爬,支持页面JS解析。
[0123]本实施例让爬虫拥有可编程能力的优势非常明显,可以支持编程语言的各种特性,比如支持强大的的正则表达式,可以从根本上解决爬虫面临的各种匹配问题,同时可编程模块还支持无限扩展,支持原生宿主语言的各种特性。
[0124]本实施例为每个抓取源站直接编写抓取脚本,支持用类CSS选择器的语法操作HTML结点,也可直接采用正则表达式进行文本匹配,比各种应用高深页面算法定位出文本内容,标题等关键信息更直接,迅速,有效,是一个专业级别的在线爬虫抓取平台。
[0125]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0126]在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0127]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0128]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0129]所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0130]以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
【主权项】
1.一种支持在线编程的爬虫抓取数据方法,其特征在于,包括: 将封装好的爬虫接口注入到预置的宿主环境中进行解析; 将爬虫脚本的编写部分封装为基于所述宿主环境的可编辑模块; 通过所述可编辑模块获取到在线编程后的脚本,并对所述脚本进行解析与执行; 根据执行的所述脚本,通过所述爬虫接口抓取对应的网页数据。2.根据权利要求1所述的支持在线编程的爬虫抓取数据方法,其特征在于,将封装好的爬虫接口注入到预置的宿主环境中进行解析之前还包括: 向所述宿主环境对应的宿主语言进行所述爬虫接口的封装处理。3.根据权利要求2所述的支持在线编程的爬虫抓取数据方法,其特征在于,将封装好的爬虫接口注入到预置的宿主环境中进行解析具体包括: 将封装好的爬虫接口注入到所述宿主环境中的与所述宿主语言的脚本引擎进行解析。4.根据权利要求3所述的支持在线编程的爬虫抓取数据方法,其特征在于,通过所述可编辑模块获取到在线编程后的脚本,并对所述脚本进行解析与执行之前还包括: 将在线编程后的所述脚本通过所述可编辑模块加载并进行初次编译; 对所述脚本的内容进行哈希运算,将脚本初次编译后的编译结果进行缓存。5.根据权利要求4所述的支持在线编程的爬虫抓取数据方法,其特征在于,通过所述可编辑模块获取到在线编程后的脚本,并对所述脚本进行解析与执行具体包括: 根据获取到的启动指令或预置启动时间启动在所述脚本引擎中的爬虫进程,并从缓存中调用所述编译结果; 执行所述编译结果。6.一种支持在线编程的爬虫抓取数据装置,其特征在于,包括: 第一解析模块,用于将封装好的爬虫接口注入到预置的宿主环境中进行解析; 第一封装模块,用于封装将爬虫脚本的编写部分封装为基于所述宿主环境的可编辑模块; 第二解析模块,用于通过所述可编辑模块获取到在线编程后的脚本,并对所述脚本进行解析与执行; 抓取模块,用于根据执行的所述脚本,通过所述爬虫接口抓取对应的网页数据。7.根据权利要求6所述的支持在线编程的爬虫抓取数据装置,其特征在于,所述的支持在线编程的爬虫抓取数据装置还包括: 第二封装模块,用于向所述宿主环境对应的宿主语言进行所述爬虫接口的封装处理。8.根据权利要求7所述的支持在线编程的爬虫抓取数据装置,其特征在于,第一解析模块,具体用于将封装好的爬虫接口注入到所述宿主环境中的与所述宿主语言的脚本引擎进行解析。9.根据权利要求8所述的支持在线编程的爬虫抓取数据装置,其特征在于,所述的支持在线编程的爬虫抓取数据装置还包括: 编译模块,用于将在线编程后的所述脚本通过所述可编辑模块加载并进行初次编译; 保存模块,用于对所述脚本的内容进行哈希运算,将脚本初次编译后的编译结果进行缓存。10.根据权利要求9所述的支持在线编程的爬虫抓取数据装置,其特征在于,第二解析模块具体包括: 调用子模块,用于根据获取到的启动指令或预置启动时间启动在所述脚本引擎中的爬虫进程,并从缓存中调用所述编译结果; 执行子模块,用于执行所述编译结果。11.一种支持在线编程的爬虫抓取数据系统,其特征在于,包括: 浏览器客户端,以及如权利要求6至10中任意一项所述的支持在线编程的爬虫抓取数据装置; 所述支持在线编程的爬虫抓取数据装置与所述浏览器客户端通信连接; 所述浏览器客户端,用于将在线编程的脚本内容发送给所述支持在线编程的爬虫抓取数据装置。
【文档编号】G06F9/44GK106021257SQ201511034274
【公开日】2016年10月12日
【申请日】2015年12月31日
【发明人】覃炜
【申请人】广州华多网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1