基于APP客户端的爬虫及爬取方式与流程
优采云 发布时间: 2020-05-11 08:03
本发明涉及网路爬虫领域,具体涉及基于APP客户端的爬虫及爬取技巧。
背景技术:
现有的爬虫技术获取目标服务器数据的方法为通过HTTP库向第三方服务器发起恳求,即发送一个Request,请求可以包含额*敏*感*词*单一早已不是太符合现有多电子设备的社会。
技术实现要素:
鉴于背景技术的不足,本发明是基于APP客户端的爬虫及爬取方式,所要解决的技术问题是传统的爬虫服务器直接访问目标服务器形式中,爬虫服务器多样化程度高,可移植性差、维护和更新太困难,且频繁爬取数据并上传到爬虫服务器容易被具有反爬虫的目标服务器永久封锁IP,也对爬虫服务器引起很大压力,且基于浏览器的爬虫脚本对于用户来说并不友好,每次执行新的爬虫任务时须要重新下载爬虫脚本,会被杀毒软件刺死。
为实现上述技术目的,本发明提供了如下技术方案:
基于APP客户端的爬虫,包括与爬虫服器匹配的爬虫sdk,爬虫sdk集成在APP客户端中,APP客户端通过与爬虫服务器端约定的特定参数来控制爬虫程序的启停,APP客户端作为子节点控制启动爬虫程序采集目标服务器数据并实时退还给爬虫服务器,然后由爬虫服务器解析采集的目标服务器数据。
爬虫服务器包括文件服务器、应用服务器和解析服务器,爬虫服务器将爬取的数据以文件形式储存在所述文件服务器中,由解析服务器定时解析从目标服务器采集来的数据。
基于APP客户端的爬虫的爬取方式,其特点在于包括如下步骤:
S1:APP客户端配置初始化完毕后向爬虫服务器发起启动互联网爬虫恳求;
S2:所述爬虫服务器收到启动恳求,并向APP客户端发送爬取规则及目标服务器的地址并判定是否生成相应的恳求队列;
S3:判断每位恳求的页面是否须要信令,如须要先通过用户协助访问页面,爬虫服务器按照恳求队列按次序拼接,封装目标服务器的Request恳求返回给APP客户端;
S4:APP客户端解析Request特定参数并判定是否须要继续爬取数据,如须要就向目标服务器发起恳求获取Response;不需要则停止互联网爬虫回到步骤S1重新配置爬取任务;
S5:APP客户端恳求爬虫服务器,并成功响应后并携带目标服务器返回的Response,APP客户端实时向文件服务器上传Response,应用服务器按照解析规则定时解析文件服务器中的Response文件,并将解析后的数据保存到应用服务器的数据库中;
S6:爬虫服务器解析Response并更改队列状态,继续执行第S2步。
步骤S4中所述Response的状态码为403时,或是爬虫服务器校准Response不符合校准规则,则舍弃这次爬虫恳求。
步骤S5中的所述数据库包含关系型数据库和面向文档的非关系型数据库,与用户状态相关且之后会发生变化的数组保存在关系型数据库中,不与状态相关多用于查询的数据通过构建索引存于非关系数据库中。
本发明与现有技术相比所具有的有益疗效是:将爬虫从传统的服务端转移到移动端上,爬虫程序嵌套在APP客户端里,本发明采用APP内嵌入爬虫sdk交互代码形式,安装了该APP的移动端可作为一个子节点控制爬虫的启动,服务器端持续监控协调各个爬虫的工作,及时接收爬虫回传的有用信息,通过构建和维护数据库对接收到的回传信息进行储存。本APP客户端爬虫显著减少服务器端的运算负荷app爬虫软件,且所有安装APP的移动端都有不同的IP地址,爬虫服务器借助移动端的IP地址抓取目标服务器的数据,在目标服务器有反爬虫机制时,这种由APP客户端和目标服务器交互的形式更象是人类在操作(网络恳求行为本身就是人类操作电子设备发起恳求获取资源展示给人类观看)。因为这些恳求方法本身就是由用户的电子设备发起的网路恳求在获取资源有效地解决了IP被封的问题;采用客户机/和服务器(c/s)模式,更具有扩展性和可移植性,相对于采用浏览器端和服务端(b/s)模式而言,基于APP客户端的爬虫无需多次下载任务脚本,有效防止被杀毒软件误伤的风险。
附图说明
本发明有如下附图:
图1为本发明的爬虫工作流程图;
图2为本发明的爬虫系统*敏*感*词*。
具体施行方法
本施行例中的基于APP客户端的爬虫,包括与爬虫服务器匹配的爬虫sdk,爬虫sdk集成在APP客户端中,该爬虫sdk可移植能力强,不依赖浏览器。APP客户端通过与爬虫服务器端约定的特定参数来控制爬虫程序的启停,APP客户端作为子节点控制启动爬虫程序采集目标服务器数据实时退还给爬虫服务器app爬虫软件,爬虫服务器包括文件服务器、应用服务器和解析服务器,爬虫服务器将爬取的数据以文件形式储存在所述文件服务器中,由解析服务器定时解析从目标服务器采集来的数据,且访问频度不超过目标服务器限制的访问频度上限,一般不超过每秒10次,这种APP客户端可以应用在更多的联通终端上,每个联通终端都提供一个不同的IP地址,这样原理上目标服务器未能完全封杀联通终端的IP地址。
图1是本施行例的基于APP客户端配置初始化完毕后向爬虫服务器发起启动互联网爬虫恳求。爬虫服务器收到启动恳求,会向APP客户端发送爬取规则及目标服务器的地址并判定是否生成相应的恳求队列。判断每位恳求的页面是否须要信令,如须要先通过用户协助访问页面,爬虫服务器按照恳求队列,封装目标服务器的Request恳求返回给APP客户端,Request恳求参数包含的必要参数:URL、Method、Headers、Form表单等。APP客户端解析Request特定参数(根据后端前端约定好的特定参数判定是否须要继续爬取数据),如须要就向目标服务器发起恳求获取Response。通过模仿人的行为访问目标服务器来避免反爬虫机制的IP限制,如果不需要继续爬取则停止恳求目标服务器之后回到初始状态等待爬虫服务器重新配置爬取任务。APP客户端恳求爬虫服务器,成功响应后并携带目标服务器返回的Response实时上传到文件服务器,爬虫服务器校验Response并更改队列状态,继续判定是否生成相应的恳求队列。同时解析服务器按照解析规则(爬取数据不同须要配置不同的解析规则,将解析规则存在MySQL数据中,项目启动后缓存在Redis数据库中,Redis数据库为非关系型数据库,效率很高,为爬虫系统做扩充打算。)定时解析文件服务器中封装的Response文件。并将解析后的符合解析规则与用户相关的数组数据存储在MySQL数据库中,解析服务器解析Response并更改解析状态。
图2是本施行例的基于APP客户端的爬虫的系统*敏*感*词*,集成爬虫sdk的APP安装在不同的移动端上就构成了本爬虫系统的一部分。与传统的分布式爬虫系统服务器端相比,本发明的服务器子系统毋须为爬虫提供其运行所需的运算(CPU)资源和IP资源,本发明的爬虫占用的这两种资源都取自联通客户端,且与基于浏览器的爬虫系统相比,基于APP客户端的爬虫无需按照不同的爬取任务多次下载爬虫任务脚本,节省流量,有效防止被杀毒软件误伤的风险;实时将爬虫客户端从目标服务器上得到的Response数据上传到文件服务器中,定时由应用服务器解析后并持久保存到数据库中这样可避免基于浏览器的爬虫脚本因严禁浏览器缓存而未能完整地保存目标服务器返回的数据的问题。