爬虫识别-指标碰撞-准备数据 avi| 学习笔记

简介: 快速学习爬虫识别-指标碰撞-准备数据 avi

开发者学堂课程【大数据实战项目 - 反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第六阶段爬虫识别-指标碰撞-准备数据 avi】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/674/detail/11717


爬虫识别-指标碰撞-准备数据 avi

目录:

一、判断是否为爬虫

二、爬虫识别实践

三、指标碰撞详细步骤

 

一、判断是否为爬虫

分为6

1、获取到封装好的 processedData 进行 map 操作,得到每一条访问数据

2、使用数据库流程策略、ip、和所有收集的 map 为指标碰撞准备数据

3、指标碰撞分析将数据计算的值与企业配置的阈值进行对比,为打分算法准备数据

4、打分算法接收数据返回分值

5、根据分值与最终阈值进行对比,判断是否是爬虫

6、最后将所有打分结果封装到AntiCalculateResult 中返回

六步可细化为三个部分,爬虫识别流程中的爬虫识别分指标碰撞、最终打分、爬虫判断三步。

//爬虫识别

//1指标碰撞

//2最终打分

//3爬虫判断(结论:是/不是)

 

二、爬虫识别实践

获取到封装好的 processedData 进行 map 操作,得到每一条访问数据

image.png

拿到八个结果,下一步在此批数据中拿到每一条数据。

image.png

截取数据中 ip,用 ip 截取八个结果对应的值与企业配置的八个阈值对比。

用此八个结果做数据碰撞,需要抽取数据。

image.png

 

拿到原始数据调用 map 拿到某一条数据,抽取 ip,将流程和八个结果放到一个方法做。

processedData 为原始数据,1-8步都使用了 processedData。一批数据进入processedData产生八个结果,再从 processedData 里拿出某一条数据。

processedData调用.map 操作,拿到一条数据。一条数据中获取数据中 ip,val ip=message.remoteAddr

processedData.map(message=>{

//获取数据中 ip

val ip=message.remoteAddr

ip、数据库中流程规则、八个结果三个数据为指标碰撞准备数据,不能都写到获取数据中 ip 否则代码很多、很大、很乱,放到独立的方法里,在方法里准备数据。

方法名字RuleUtil.calculateAntiResult 计算反爬虫结果

计算结果

case class AntiCalculateResult(processedData: ProcessedData

ip:String,

ipBlockCounts:Int,

ipAccessCounts: Int,

criticalPageAccessCounts: Int

userAgentCounts: Int

critivalPageMinInterval: Int

accessPageIntervalLessThanDefault:Int, differentTripQuerysCounts: Int

criticalCookies: Int

flowsScore:Array[FlowScoreResult])

最终返回样例列,将需要用到的所有数据封装完,ProcessedDataip、八个指标ipBlockCounts:Int, ip 段对应的值、ipAccessCounts: Int,ip 访问总量对应的值、criticalPageAccessCounts: IntuserAgent

Counts: IntcritivalPageMinInterval:Int

accessPageIntervalLessTha

nDefault:Int, differentTripQuerysCounts: IntcriticalCookies: Int,)

ProcessedData、八个指标计算出的值,ip 可截取。只差 flowsSco

re

写方法RuleUtil.calculateAntiResult 加括号

RuleUtil.calculateAntiResult()

报红,没有 RuleUtil,创建。rulecompute businessprocess 右键新建 Scala Class Object,名为RuleUtil,

image.png

//用于实现爬虫识别逻辑的代码

Object RuleUtil{

}

引入RuleUtil.calculateAntiResult()

需要用很多数据,传入 ip、八个结果集、流程。缺少 ProcessedData,方法的名字是计算反爬虫的结果。样例是结果,封装最后返回值,返回值里要ip、八个结果的对应的值、flowsScore:ArrayProcessedDat

a, iP,八个结果返回值、flowsScore 可算出。

ProcessedData原始数据,第一个参数将ProcessedData messa

ge ip数据传入。ipBlockCounts:Int值为 map, ip 抽出。将计算的八个 map 放入第一个参数,每条数据和八个结果拿到后放到提取结果里。第一个 Map ipBlockCountMap,第二个 ipCountsMap,第三个criticalPagesCountsMap,第四个userAgentCountsMap,第五个differentJourneysCountsMap,第六个 ipCookCountMap,第七个 minTimeDiffMap,第八个LessDefaultTimesMap粘贴。有了 MapipProcessedData 差广播变量,企业配置的8个指标阈值,广播变量在流程规则,复制粘贴 .value。爬虫识别所有的数据放到了此方法里。

//放回结果是最终的返回结果AntiCalculateResultRuleutil.calculateAntiResult(message,ip,ipBlockCountsMap,ipcountsMap,criticalPagescountsMap,userAgentCountsMap,differentJourneysCountsMap,ipCookCountMap,minTimeDiffMap,lessDefaultTimesMap,broadcastFlowList.value)

创建方法,问号去掉,大括号补全

def calcufateAntiResult(message: ProcessedDataip:stringipBloc

kCountsMap:collection.Map[string,Int],

ipCountsMap:collection.Map[StringInt]

criticalPagesCountsMap:c

ollection.Map[String,Int],userAgentCountsMap:collection.Map[string,Int],differentJourneysC

ountsMap:collection.Map[String ,Int],ipCookCountMap:collectionMap[String,Int],minTimeDiffMap:collection.Map[stringInt],lessDefaultTimesMap:collectionMap[string,Int],value:ArrayBuffer[Flowcollocation):AntiCalculateResult

calcufateAntiResult 要拿到最终的返回结果 AntiCalculateResult,没有此结果,放 AntiCalculateResult{},数据为空后续封装需要的数据。

calcufateAntiResult 方法做爬虫识别的步骤

//爬虫识别

//1指标碰撞

//2最终打分

//3爬虫判断(结论:是/不是)

数据碰撞还未抽取数据,属于数据碰撞准备数据阶段。

 

三、指标碰撞的详细步骤

1目标:为打分算法准备数据

指标碰撞做分步,准备数据阶段和碰撞阶段。

image.png

此过程为准备数据,将一条数据在8个结果集内对应的指标值和企业端配置的8个指标阈值抽出。

碰撞数据阶段:

image.png

2思路与关键代码:准备数据

1)提取一个 ip 在八个结果集内对应的数据,

ip 在8个结果中抽出

2)将取出的数据封装为 Map,将 Map 与流程数据传入碰撞方法

企业端配置的8个指标阈值是8个结果集,拿到8个数字是零散的,需要打包到一起放入一个 Map,企业端配置的8个指标阈值在一个数据里。将打包好的 Map 8个计算的结果和企业端配置的8个指标阈值传给指标碰撞,打分算法直接用。为了方便计算,结果封装为 Map 一起传入指标碰撞。

//1指标碰撞(准备数据)

//1.1提取一个 ip 在八个结果集内对应的数据,

//1.2将取出的数据封装为 Map,将 Map 与流程数据传入碰撞方法

相关文章
|
4天前
|
数据采集
爬虫抓取数据过程中代理IP频繁掉线:以Kookeey为例的解决方案
在数据抓取过程中,代理IP不可或缺,但其频繁掉线问题严重影响效率。本文以Kookeey为例,探讨解决之道:1)深入理解掉线原因,审慎选择稳定的服务商; 2)保持代理IP更新并合理配置使用参数; 3)在程序中集成错误处理与重试逻辑; 4)必要时升级至更优质的服务; 5)主动与服务商沟通寻求支持; 6)探索替代抓取策略,如调整抓取节奏或采用分布式架构。这些措施有助于显著提升抓取成功率及稳定性。
|
23天前
|
数据采集 数据可视化 搜索推荐
Python爬虫技术从去哪儿网获取旅游数据,对攻略进行可视化分析,提供全面的旅游攻略和个性化的出行建议
本文利用Python爬虫技术从去哪儿网获取旅游数据,通过数据处理和可视化分析,提供了全面的旅游攻略和个性化出行建议,同时探讨了热门目的地、出游方式、时间段以及玩法的偏好,为旅游行业和游客提供了有价值的参考信息。
|
18天前
|
数据采集 数据挖掘 数据处理
Python爬虫开发:爬取简单的网页数据
本文详细介绍了如何使用Python爬取简单的网页数据,以掘金为例,展示了从发送HTTP请求、解析HTML文档到提取和保存数据的完整过程。通过这个示例,你可以掌握基本的网页爬取技巧,为后续的数据分析打下基础。希望本文对你有所帮助。
|
19天前
|
数据采集 数据挖掘 数据处理
Python爬虫开发:爬取简单的网页数据
在数据分析中,数据的获取是第一步。随着互联网的普及,网络爬虫成为获取数据的重要手段。本文将详细介绍如何使用Python爬取简单的网页数据。
|
25天前
|
数据采集 数据挖掘 Python
python爬虫去哪儿网上爬取旅游景点14万条,可以做大数据分析的数据基础
本文介绍了使用Python编写的爬虫程序,成功从去哪儿网上爬取了14万条旅游景点信息,为大数据分析提供了数据基础。
|
23天前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
|
2月前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
【7月更文挑战第31天】在网络数据的海洋中,使用Python的`requests`库构建网络爬虫就像探索未知的航船。HTTP协议指导爬虫与服务器交流,收集信息。HTTP请求包括请求行、头和体,响应则含状态行、头和体。`requests`简化了发送各种HTTP请求的过程。
53 4
|
2月前
|
数据采集 存储 API
在信息时代,Python爬虫用于自动化网络数据采集,提高效率。
【7月更文挑战第5天】在信息时代,Python爬虫用于自动化网络数据采集,提高效率。基本概念包括发送HTTP请求、解析HTML、存储数据及异常处理。常用库有requests(发送请求)和BeautifulSoup(解析HTML)。基本流程:导入库,发送GET请求,解析网页提取数据,存储结果,并处理异常。应用案例涉及抓取新闻、商品信息等。
66 2
|
2月前
|
数据采集 存储 Java
如何让Python爬虫在遇到异常时继续运行
构建健壮Python爬虫涉及异常处理、代理IP和多线程。通过try/except捕获异常,保证程序在遇到问题时能继续运行。使用代理IP(如亿牛云)防止被目标网站封锁,多线程提升抓取效率。示例代码展示了如何配置代理,设置User-Agent,以及使用SQLite存储数据。通过`fetch_url`函数和`ThreadPoolExecutor`实现抓取与重试机制。
如何让Python爬虫在遇到异常时继续运行
|
2月前
|
数据采集 网络协议 数据挖掘
网络爬虫进阶之路:深入理解HTTP协议,用Python urllib解锁新技能
【7月更文挑战第30天】网络爬虫是数据分析和信息聚合的关键工具。深入理解HTTP协议及掌握Python的urllib库对于高效爬虫开发至关重要。HTTP协议采用请求/响应模型,具有无状态性、支持多种请求方法和内容协商等特点。
25 3
下一篇
云函数