企业级网络爬虫实现及商业价值
作者:互联网
目录
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 数仓分层架构
- ODS:Operational Data Store,操作数据层,在结构上其与源系统的增量或者全量数据基本保持一致。
- DWD:Data Warehouse Detail,明细数据层,存放面向业务过程的明细事实数据,做一些数据清洗和规范化等。
- DWS:Data Warehouse Summary,汇总数据层。
- DIM:公共维度层,基于维度建模理念思想,建立整个企业的一致性维度。降低数据计算口径和算法不统一风险。公共维度层的表通常也被称为逻辑维度表,维度和维度逻辑表通常一一对应。
- FACT:数据集市层,是根据DW层数据按照各种维度或多种维度组合把需要查询的一些事实字段进行汇总统计并作为单独的列进行存储。
8.2 ETL数据流
9. 数据质量监控
通过PowerBI对质量数据可视化,通过数据中台DAG监控完成监控报警。
10. 可视化平台及业务赋能
10.1 关键能力
任何目标平台均可自定义配置化抓取,获取价值数据。
10.2 业务平台
依托主题网络爬虫技术,采集互联网数据,通过大数据处理分析,洞察市场风险,把握市场先机。
10.3 业务赋能
目前主要采集商品数据,如商品链接、售价、优惠券等信息。
标签:请求,爬虫,企业级,爬取,cookie,商业价值,数据,id 来源: https://blog.csdn.net/zhangweiocp/article/details/120246430