CN109815385A - 基于app客户端的爬虫及爬取方法 - Google Patents
基于app客户端的爬虫及爬取方法 Download PDFInfo
- Publication number
- CN109815385A CN109815385A CN201910102917.5A CN201910102917A CN109815385A CN 109815385 A CN109815385 A CN 109815385A CN 201910102917 A CN201910102917 A CN 201910102917A CN 109815385 A CN109815385 A CN 109815385A
- Authority
- CN
- China
- Prior art keywords
- crawler
- server
- app client
- request
- response
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了基于APP客户端的爬虫及爬取方法,包括与爬虫服器匹配的爬虫sdk,爬虫sdk集成在APP客户端中,APP客户端通过与爬虫服务器端约定的特定参数来控制爬虫程序的启停,APP客户端作为子节点控制启动爬虫程序采集目标服务器数据实时返还给爬虫服务器,并由爬虫服务器解析采集的目标服务器数据,所有APP客户端都可自由地集成此爬虫sdk,这样既减轻了爬虫服务器的访问压力又可解决现有互联网爬虫技术在反爬虫技术检测下封杀IP的问题。
Description
技术领域
本发明涉及网络爬虫领域,具体涉及基于APP客户端的爬虫及爬取方法。
背景技术
现有的爬虫技术获取目标服务器数据的方式为通过HTTP库向第三方服务器发起请求,即发送一个Request,请求可以包含额外的headers等信息,等待第三方服务器响应,等待获取第三方服务器响应内容:如果第三方服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能有HTML,JSON字符串,二进制数据(如图片视频)等类型,这种方法的缺点是由爬虫服务器直接请求第三方服务器,容易造成爬虫服务器的负载过大,一旦第三方服务器有反爬虫机制如:检查IP访问情况,一个IP如果短时间内超过了指定的次数就会被限制访问或严重情况下封杀网络IP造成无法访问。因此对于服务器的维护和更新产生了极大的困难。而且这种方法有一显著缺点就是无法应用在现有流行的个人电子产品上,如手机、个人平板电脑等移动终端,只能在服务器上使用,应用范围单一已经不是很符合现有多电子设备的社会。
发明内容
鉴于背景技术的不足,本发明是基于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的移动端都有不同的IP地址,爬虫服务器利用移动端的IP地址抓取目标服务器的数据,在目标服务器有反爬虫机制时,这种由APP客户端和目标服务器交互的方式更像是人类在操作(网络请求行为本身就是人类操作电子设备发起请求获取资源展示给人类观看)。因为这种请求方式本身就是由用户的电子设备发起的网络请求在获取资源有效地解决了IP被封的问题;采用客户机/和服务器(c/s)模式,更具有扩展性和可移植性,相对于采用浏览器端和服务端(b/s)模式而言,基于APP客户端的爬虫无需多次下载任务脚本,有效避免被杀毒软件误杀的风险。
附图说明
本发明有如下附图:
图1为本发明的爬虫工作流程图;
图2为本发明的爬虫系统结构图。
具体实施方式
本实施例中的基于APP客户端的爬虫,包括与爬虫服务器匹配的爬虫sdk,爬虫sdk集成在APP客户端中,该爬虫sdk可移植能力强,不依赖浏览器。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数据上传到文件服务器中,定时由应用服务器解析后并持久保存到数据库中这样可避免基于浏览器的爬虫脚本因禁止浏览器缓存而无法完整地保存目标服务器返回的数据的问题。
Claims (5)
1.基于APP客户端的爬虫,其特征在于:包括与爬虫服器匹配的爬虫sdk,所述爬虫sdk集成在APP客户端中,所述APP客户端通过与爬虫服务器端约定的特定参数来控制爬虫程序的启停,所述APP客户端作为子节点控制启动爬虫程序采集目标服务器数据实时返还给爬虫服务器,并由所述爬虫服务器解析采集的目标服务器数据。
2.根据权利要求1所述的基于APP客户端的爬虫,其特征在于所述爬虫服务器包括文件服务器、应用服务器和解析服务器,所述爬虫服务器将爬取的数据以文件方式存储在所述文件服务器中,由所述解析服务器定时解析从所述目标服务器采集来的数据。
3.基于APP客户端的爬虫的爬取方法,其特征在于包括如下步骤:
S1:所述APP客户端配置初始化完毕后向所述爬虫服务器发起启动互联网爬虫请求;
S2:所述爬虫服务器收到启动请求,并向所述APP客户端发送爬取规则及目标服务器的地址并判断是否生成相应的请求队列;
S3:判断每个请求的页面是否需要鉴权,如需要先通过用户协助访问页面,所述爬虫服务器根据请求队列按顺序拼接,封装所述目标服务器的Request请求返回给所述APP客户端;
S4:所述APP客户端解析Request特定参数并判断是否需要继续爬取数据,如需要就向所述目标服务器发起请求获取Response;不需要则停止互联网爬虫回到步骤S1重新配置爬取任务;
S5:所述APP客户端请求所述爬虫服务器,并成功响应后并携带所述目标服务器返回的所述Response,所述APP客户端实时向所述爬虫服务器上传所述Response,爬虫服务器将Response文件以文本形式上传至所述文件服务器,所述解析服务器根据解析规则定时解析所述文件服务器中的Response文件,并将解析后的数据保存到所述应用服务器的数据库中;
S6:爬虫服务器解析Response并修改队列状态,继续执行第S2步。
4.根据权利要求3所述的基于APP客户端的爬虫的爬取方法,其特征在于步骤S5中的所述数据库包含关系型数据库和面向文档的非关系型数据库,与用户状态相关且以后会发生变化的字段保存在关系型数据库中,不与状态相关多用于查询的数据通过建立索引存于非关系数据库中。
5.根据权利要求3所述的基于APP客户端的爬虫的爬取方法,其特征在于步骤S4中所述Response的状态码为403时,或是爬虫服务器校验Response不符合校验规则,则放弃此次爬虫请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910102917.5A CN109815385A (zh) | 2019-01-31 | 2019-01-31 | 基于app客户端的爬虫及爬取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910102917.5A CN109815385A (zh) | 2019-01-31 | 2019-01-31 | 基于app客户端的爬虫及爬取方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109815385A true CN109815385A (zh) | 2019-05-28 |
Family
ID=66606252
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910102917.5A Pending CN109815385A (zh) | 2019-01-31 | 2019-01-31 | 基于app客户端的爬虫及爬取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109815385A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110287395A (zh) * | 2019-07-01 | 2019-09-27 | 杭州安恒信息技术股份有限公司 | 一种爬虫方法、装置、系统、设备及可读存储介质 |
CN110297962A (zh) * | 2019-06-28 | 2019-10-01 | 北京金山安全软件有限公司 | 网站资源的爬取方法、装置、系统和计算机设备 |
CN110516139A (zh) * | 2019-09-05 | 2019-11-29 | 上海携程商务有限公司 | 爬虫系统及方法 |
CN110990675A (zh) * | 2019-11-25 | 2020-04-10 | 爱信诺征信有限公司 | 网页数据爬取方法及系统 |
CN111131451A (zh) * | 2019-12-23 | 2020-05-08 | 武汉联影医疗科技有限公司 | 业务处理系统及业务处理方法 |
CN112541143A (zh) * | 2020-12-17 | 2021-03-23 | 青岛以萨数据技术有限公司 | 异步图片获取方法及系统 |
CN113411222A (zh) * | 2021-08-02 | 2021-09-17 | 广州市刑事科学技术研究所 | 存储器、app服务器主机地址分析方法、装置和设备 |
CN113672792A (zh) * | 2021-08-20 | 2021-11-19 | 广州畅驿智能科技有限公司 | 一种网络舆情数据处理方法及系统 |
CN114780822A (zh) * | 2022-06-20 | 2022-07-22 | 云账户技术(天津)有限公司 | 爬取应用程序数据的方法、装置、电子设备及存储介质 |
CN114826959A (zh) * | 2022-04-19 | 2022-07-29 | 浙江大学 | 一种针对音频数据反爬虫技术脆弱性分析方法及系统 |
CN115189973A (zh) * | 2022-09-13 | 2022-10-14 | 以见科技(苏州)有限公司 | 一种软件安全与加密的方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105447184A (zh) * | 2015-12-15 | 2016-03-30 | 北京百分点信息科技有限公司 | 信息抓取方法及装置 |
CN106844486A (zh) * | 2016-12-23 | 2017-06-13 | 北京奇虎科技有限公司 | 爬取动态网页的方法及装置 |
CN108089967A (zh) * | 2017-12-12 | 2018-05-29 | 成都睿码科技有限责任公司 | 一种爬取安卓手机App数据的方法 |
CN108133140A (zh) * | 2017-12-08 | 2018-06-08 | 成都数聚城堡科技有限公司 | 一种动态防爬虫的方式 |
CN108282451A (zh) * | 2017-01-20 | 2018-07-13 | 广州市动景计算机科技有限公司 | 数据劫持判断方法、装置及用户终端 |
CN108551452A (zh) * | 2018-04-18 | 2018-09-18 | 平安科技(深圳)有限公司 | 网络爬虫方法、终端及存储介质 |
-
2019
- 2019-01-31 CN CN201910102917.5A patent/CN109815385A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105447184A (zh) * | 2015-12-15 | 2016-03-30 | 北京百分点信息科技有限公司 | 信息抓取方法及装置 |
CN106844486A (zh) * | 2016-12-23 | 2017-06-13 | 北京奇虎科技有限公司 | 爬取动态网页的方法及装置 |
CN108282451A (zh) * | 2017-01-20 | 2018-07-13 | 广州市动景计算机科技有限公司 | 数据劫持判断方法、装置及用户终端 |
CN108133140A (zh) * | 2017-12-08 | 2018-06-08 | 成都数聚城堡科技有限公司 | 一种动态防爬虫的方式 |
CN108089967A (zh) * | 2017-12-12 | 2018-05-29 | 成都睿码科技有限责任公司 | 一种爬取安卓手机App数据的方法 |
CN108551452A (zh) * | 2018-04-18 | 2018-09-18 | 平安科技(深圳)有限公司 | 网络爬虫方法、终端及存储介质 |
Non-Patent Citations (1)
Title |
---|
赵彦松: ""基于网络爬虫的数据采集系统设计与实现"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110297962A (zh) * | 2019-06-28 | 2019-10-01 | 北京金山安全软件有限公司 | 网站资源的爬取方法、装置、系统和计算机设备 |
CN110287395A (zh) * | 2019-07-01 | 2019-09-27 | 杭州安恒信息技术股份有限公司 | 一种爬虫方法、装置、系统、设备及可读存储介质 |
CN110516139A (zh) * | 2019-09-05 | 2019-11-29 | 上海携程商务有限公司 | 爬虫系统及方法 |
CN110516139B (zh) * | 2019-09-05 | 2023-07-07 | 上海携程商务有限公司 | 爬虫系统及方法 |
CN110990675A (zh) * | 2019-11-25 | 2020-04-10 | 爱信诺征信有限公司 | 网页数据爬取方法及系统 |
CN111131451A (zh) * | 2019-12-23 | 2020-05-08 | 武汉联影医疗科技有限公司 | 业务处理系统及业务处理方法 |
CN112541143B (zh) * | 2020-12-17 | 2022-08-19 | 青岛以萨数据技术有限公司 | 异步图片获取方法及系统 |
CN112541143A (zh) * | 2020-12-17 | 2021-03-23 | 青岛以萨数据技术有限公司 | 异步图片获取方法及系统 |
CN113411222A (zh) * | 2021-08-02 | 2021-09-17 | 广州市刑事科学技术研究所 | 存储器、app服务器主机地址分析方法、装置和设备 |
CN113672792A (zh) * | 2021-08-20 | 2021-11-19 | 广州畅驿智能科技有限公司 | 一种网络舆情数据处理方法及系统 |
CN114826959A (zh) * | 2022-04-19 | 2022-07-29 | 浙江大学 | 一种针对音频数据反爬虫技术脆弱性分析方法及系统 |
CN114826959B (zh) * | 2022-04-19 | 2023-10-13 | 浙江大学 | 一种针对音频数据反爬虫技术脆弱性分析方法及系统 |
CN114780822A (zh) * | 2022-06-20 | 2022-07-22 | 云账户技术(天津)有限公司 | 爬取应用程序数据的方法、装置、电子设备及存储介质 |
CN115189973A (zh) * | 2022-09-13 | 2022-10-14 | 以见科技(苏州)有限公司 | 一种软件安全与加密的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109815385A (zh) | 基于app客户端的爬虫及爬取方法 | |
CN103634301B (zh) | 客户端及其访问服务器中用户存储的私有数据的方法 | |
CA2915619C (en) | Method and apparatus for customized software development kit (sdk) generation | |
CN105553917B (zh) | 一种网页漏洞的检测方法和系统 | |
US11856028B2 (en) | Systems and methods for in-session refresh of entitlements associated with web applications | |
CN110651252A (zh) | 内容管理系统扩展 | |
KR102243793B1 (ko) | 코드 가상화 및 원격 프로세스 호출 생성을 위한 방법 및 장치 | |
US20020149677A1 (en) | Digital camera with communications functionality | |
CN110020062B (zh) | 一种可定制的网络爬虫方法及系统 | |
WO2004015567A3 (en) | Validation framework for validating input in a markup language page on a client computer | |
CN102447720A (zh) | 手机遥控pc方法 | |
CN102917074A (zh) | 一种实现服务器端浏览器的方法和服务器 | |
US10776081B2 (en) | Systems and methods for utilizing webhooks integrated in platform-as-a-service supported application development and deployment | |
WO2015058546A1 (zh) | 网页预加载方法及装置 | |
CN110390043A (zh) | 网页邮箱数据的爬取方法、装置、终端和存储介质 | |
CN103607454B (zh) | Android系统浏览器设置私有代理服务器的方法 | |
CN102196027A (zh) | 一种实现移动云服务的系统及方法 | |
CN103716319B (zh) | 一种Web访问优化的装置和方法 | |
CN104834534A (zh) | 扩展应用程序功能的方法、装置及系统 | |
EP2687996A1 (en) | Method and system for web page rearrangement | |
CN102929489B (zh) | 客户端浏览器实现方法及客户端浏览器 | |
CN104361130B (zh) | 一种在网页中搜索局域网或指定网段内设备的方法 | |
CN105279156B (zh) | 网络信息通信方法及网络信息浏览装置 | |
CN102882988A (zh) | 一种获得资源信息的地址信息的方法、装置及设备 | |
CN108009183A (zh) | 用于在终端上显示网页的方法、装置以及终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190528 |