其他分享
首页 > 其他分享> > 企业级网络爬虫实现及商业价值

企业级网络爬虫实现及商业价值

作者:互联网

目录

1. 网络爬虫的价值和规制

1.1 网络爬虫的功能和价值

1.2 网络爬虫规制的必要性

2. 君子协议

3. 爬虫基本原理

3.1 爬虫是什么?

3.2 爬虫的基本流程

3.3 爬虫分类

4. 搜索引擎

5. 爬虫实现

5.1 爬虫服务核心逻辑概述

5.2 数据爬取开发过程

5.3 爬虫服务核心逻辑流程

5.4 内容解析

5.5 带账号爬取

5.6 登陆流程

5.7 爬虫COOKIE维护服务

6. 规则引擎

7. 反爬技术

8. 数据清洗

8.1 数仓分层架构

8.2 ETL数据流

9. 数据质量监控

10. 可视化平台及业务赋能

10.1 关键能力

10.2 业务平台

10.3 业务赋能


1. 网络爬虫的价值和规制

1.1 网络爬虫的功能和价值

        据不完全统计,目前互联网上50%以上的流量是爬虫产生的。常运用于搜索引擎、新闻平台的内容汇聚和生成、电子商务平台的价格对比功能、基于气象数据的天气预报等应用,网络爬虫作为数据抓取的实践工具,构成了互联网开放和信息资源共享理念的基石,如同互联网世界的一群工蜂,不断地推动网络空间的建设和发展。

1.2 网络爬虫规制的必要性

        但是,有分析表明其中三分之二的数据爬取行为是恶意的,恶意机器人可以掠夺资源、削弱竞争对手、窃取知识产权或商业秘密,甚至对目标网站产生DDOS攻击的效果。允许善意、适量的数据爬取行为是数据开发共享的重要措施,符合数据所有者开放共享数据的预期。robots协议作为国际通行的行业规范,但无法为网站提供任何技术层面的保护。

2. 君子协议

        robots协议也叫robots.txt,是一种存放于网站根目录下的ASCII编码的文本文件,他通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应该被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。robots.txt应放置于网站的根目录下。robots协议并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私。

3. 爬虫基本原理

3.1 爬虫是什么?

        我们可以把互联网比作一张大网,而网络爬虫便是网上爬行的蜘蛛。把网的节点比作一个个网页,爬虫爬到这就相当于访问了该页面,获取了其信息。可以把节点间的连线比作网页与网页之间的链接关系,这样蜘蛛通过一个节点后,可以顺着节点连线继续爬行到达下一个节点,即通过一个网页继续获取后续的网页,这样整个网的节点便可以被蜘蛛全部爬行到,网站的数据就可以被抓取下来。

3.2 爬虫的基本流程

3.3 爬虫分类

4. 搜索引擎

        传统的通用搜索baidu、Yahoo和Google等,是一种大型复杂的网络爬虫,属于通用性网络爬虫的范畴。

        但是通用性搜索引擎存在着一定的局限性:

5. 爬虫实现

5.1 爬虫服务核心逻辑概述

        一个目标平台的爬取任务,定义为一个爬取链,从头节点开始,以深度优先遍历的方式,依次逐层爬取子节点内容。

        爬取链为可配置化的,即只需配置好头节点、子节点链路,包括URL、请求头、请求方式、请求参数,URL和请求头拼装规则、COOKIE设置、定时启动时间、内容解析规则、自定义解析逻辑、爬取速率、暂停时长、是否去重、断点续爬、是否需要代理、成功检查、失败重试等等规则,就能完成平台目标数据的自动化定时爬取。

        数据支持KUDU和HDFS存储,落在数仓ODS层,经过数据ETL清洗处理后,形成DWD或FACT层数据,利用KUDU+PRESTO技术,可支持数据可视化层面的交互式查询,如商品报价、电子产品优惠券等,也利用POWERBI进行商业分析,如电子产品商品排行,行业排行、市场大盘分析等。

5.2 数据爬取开发过程

5.3 爬虫服务核心逻辑流程

5.4 内容解析

5.5 带账号爬取

        针对需要登陆的系统,采用rpa控制虚拟机的方式,对网页进行扫码完成登陆,并将网页的cookie存储到mysql中。

        RPA机器人流程自动化(Robot process automation):能够代替或者协助人类在计算机、RPA手机等数字化设备中完成重复性工作和任务,只要预先设计好使用规则,RPA就可以模拟人工,进行复制、粘贴、点击、输入等操作,协助人类完成大量"规则较为固定"的工作。

        RPA模拟器+Selenium扫码登陆:基于Selenium主要是无法解决登陆时需要短信验证码的场景,所以通过输入用户名和密码登陆方式不可行,可以考虑采用扫码登陆的方式,但是通过扫码登陆方式需要的前提是,App上的登陆状态能够持久化,基于目前市场上App的使用习惯来看,一般App只用登陆一次就可以维持登陆状态。

        App登陆持久化的问题解决了,接下来的问题就是,怎么样将App+浏览器扫码登陆的方式自动化,下面介绍几款工具。

        雷电模拟器:一款Andriod模拟器

        UIPath:自动化工具,可以自动控制模拟器的行为,比如打开App、开始扫码、确定登陆等

        Appium:用于UIPath通过adb控制模拟器的通信工具

        Selenium:web自动化工具,Selenium运行在浏览器中,就像真正的用户在操作一样。

5.6 登陆流程

5.7 爬虫COOKIE维护服务

        对于不需要登陆,但在抓取时需要设定COOKIE的场景,如COOKIE中包含对数据值产生影响的信息、通过COOKIE反扒等,通过该服务可定时获取COOKIE,维护到COOKIE池中,如维护AWS、SN、BLIBLI等平台。

6. 规则引擎

        爬虫所需要的变量因子抽象为可配置化信息,维护在MySQL中,目标站点爬取,只需配置相应信息,即可完成爬取,部分配置信息如下:

t_platform

task_chain

task_node

task_keyword

task_node_param

字段

解释

字段

解释

字段

解释

字段

解释

字段

解释

id

平台id

id

链id

id

节点id

chain_id

链id

node_id

节点id

cookie_monitor_flag

是否需要cookie监控

platform_id

平台id

previous_ids

前驱节点

task_key1

关键字1

previous_ids

前驱节点id

cookie_expire_minutes

cookie过期时间

crontab

cron表达式

chain_id

链id

task_word1

值1

parse_type

解析类型

speed_milliseconds

爬取速率

request_url

请求URL

task_key2

关键字2

param_name

参数名称

run_period_minutes

运行时长

request_header

请求头

task_word2

值2

parse_express

解析表达式

pause_period_minutes

暂停时长

request_method

请求方式

value_type

值类型(Numble、String、List)

request_param

请求参数

...

支持二次解析

expire_minutes

过期时间,用于去重

custom_class

自定义解析类

need_login

是否需要登录

encode_type

是否编解码

result_type

结果类型

success_check

成功检查

need_proxy

是否需要代理

fail_retry_nums

失败重试次数

loop_step

用于循环控制

7. 反爬技术

        爬虫与反爬虫技术是矛与盾之争,且换代周期越来越短,其攻防过程需要投入一定的人力物力研究应对。爬数过程应尽量善意,合法、有效、便捷地获取开源信息,避免恶意爬虫攻击,这种情况下一般不会遭遇反爬,从而节省投入。

        1). "请求头设置"反爬虫策略:HTTP的请求头是在每次向网络服务器发送请求时,传递的一组属性和配置信息。HTTP定义了十几种请求头类型,如User-Agent、Refer、Host、Path等,目标网站检查到没有相应的请求头或关键值错误时,拒绝访问。

        反反爬虫应对策略:配置必要的请求头或关键值生成逻辑;每次请求从User-Agent池中获取值,保证不同。

        2). "md5数字签名"反爬虫策略:如SHOPEE网站,请求头会验证"if-none-match-"值数字签名是否正确,通常该签名是通过URL、入参(SKU)等信息生成的,也会多次数字签名并加上字符串拼接。

        反反爬虫应对策略:一般签名规则可以在JS函数中寻找,理清逻辑后,可配置自定义类,按相同方式生成数字签名。

        3). "数据蜜罐"反爬虫策略:同样如SHOPEE网站,当不带"if-none-match-"请求头时,也能正常获取响应结果,但是数据是错误的。

        反反爬虫应对策略:配置成功检查,检查数据有效性。

        4). "流量限制"反爬虫策略:防护措施完备的网站会监控用户是否快速地提交表单,或者快速地与网站进行交互,从而限制速度异常,短时间大量下载信息的IP访问,此方法有可能误伤正常浏览的用户,如遇到恶意快速爬取,此方法很有必要。

        反反爬虫应对策略:配置爬取速率,在保证时效性(T+1)的情况下,尽量缓慢。

        5). "IP封锁"反爬虫策略:如同一IP,经常访问目前网站,获取较多数据,会被识别为异常流量。

        反反爬虫应对策略:从IP池中获取代理IP进行访问,可采购了商业代理服务,日均提供3万个不同的代理IP,IP代理池可解决80%的反爬问题。

        6). "cookie/cookies限制"反爬虫策略:网站为了辨别用户身份、进行session跟踪,设置cookie/cookies,当该cookies过期或者访问超过某一个阀值时就禁止掉该cookie/cookies,导致数据爬取失败。

        反反爬虫策略:通过RPA或者cookie服务维护一个cookie池,每次请求,从池中获取一个未过期的cookie。

        7). 其他反扒策略:数据量+请求头、爬取时长、验证码、图像验证、逻辑验证、行为验证、Cloudflare组件等,其中图形、行为验证、Cloudflare组件会牺牲一定的用户体验,但反爬虫较为有效,反反爬虫需要投入大量的人力去应对,考虑到投入产出比往往会放弃,如极验验证,经大量数据模型训练后可通过行为轨迹判别机器人,Cloudflare组件需cookies才能访问,但其又能识别各版本chrome selenium,导致无法获取到cookies

8. 数据清洗

        按照数仓分层架构,利用数据工厂编排数据流的ETL过程。

8.1 数仓分层架构

8.2 ETL数据流

9. 数据质量监控

        通过PowerBI对质量数据可视化,通过数据中台DAG监控完成监控报警。

10. 可视化平台及业务赋能

10.1 关键能力

        任何目标平台均可自定义配置化抓取,获取价值数据。

10.2 业务平台

        依托主题网络爬虫技术,采集互联网数据,通过大数据处理分析,洞察市场风险,把握市场先机。

10.3 业务赋能

        目前主要采集商品数据,如商品链接、售价、优惠券等信息。

标签:请求,爬虫,企业级,爬取,cookie,商业价值,数据,id
来源: https://blog.csdn.net/zhangweiocp/article/details/120246430