爬虫识别-小于自设值的次数-总结|学习笔记

简介: 快速学习爬虫识别-小于自设值的次数-总结

开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第五阶段爬虫识别-小于自设值的次数-总结】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/673/detail/11714


爬虫识别-小于自设值的次数-总结

 

内容介绍:

一.总结思路

二.关键代码

 

已经将代码写完并查看效果,接下来对小于自设值的次数做总结

//8按 iP 地址架合·某个 IP,5分钟内小于最短访间问隔(自设)的关键页面查询次数

val lessDefaultTimes=CoreRule.LessDefaultTimes(processedData,broadcastcriticalPagesList.value,broadcastFlowList.valu

//14指最终数据转换为 Map,便于后续提取、使用。

value lessDefaultTimesMap:collection.Map[string,Int]=null

lessDefaultTimes.foreachRDD(rdd=>{

lessDefaultTimesMap=rdd.collectAsMap()

lessDefaultTimes.foreachRDD(rdd=>rdd.foreach(println)) 

效果:

image.png

 

一.总结思路

某个 iP,5分钟内小于最短访问间隔(自设)的关键页面查询次数

目标:计算出某个 iP,5分钟内小于最短访问间隔(自设)的关键页面查询次数

思路:

1、获取企业系统内的自定义的最小时间间隔

遍历流程,获取流程内的规则(规则内数据)规则内有8个只需要

找到规则中 ruleNames 等于"criticalPagesLessThanDefault"的规则(有两个参数,第一个是默认的最小时间,第二个是域值)

获取出规则种的第一个参数

2、设置一个计数器(记录小于自设值数据出现的次数)

3、抽取出数据中的 iP 和数据的访问时间 url

4、遍历数据库中的关键页面的规则。

5、使用 url 与规则进行匹配

若数据的 url 能够与规则的任意一个匹配成功,那么表示这个 url 就是关键页面,将 ip 和时间返回

若数据的 url 能够与规则的任意一个没有匹配成功,那么表示这个 url 不是关键页面,将“和"返回

6、调用 groupByKeyAndWindow,或得到的结果是 key(iP)和 valuef 的 Iist(时间的 list)

7、获取到 ip 和时间的 list

8、追历时间的 list,将这个字符串类型国际时间转换成普通时间(时间戳)

9、将多个时间戳添加到一个 list

10、对这个时间影的 st 进行排序

11、遍历每两个时间影,求取两个时间戳的时间差

12、用时间差与自设值进行对比,

若时间差小于自设值,那么计数器加1

若时间差大于自设值,跳过(什么都不做) 

13、将别 p 和计教器的值返回

14、将最终数据转换为 Mp,便于后续提取、使用。

 

二.关键代码

1、获取企业系统内的自定义的最小时间间隔

遍历流程,获取流程内的规则(规则内数据)规则内有8个只需要

找到规则中 ruleNames 等于"criticalPagesLessThanDefault"的规则(有两个参数,第一个是默认的最小时间,第二个是域值)

获取出规则种的第一个参数

for (flow<-flowList){

//遍历流程,获取流程内的规则(id)

val rules=flow.rules

//找到规则中 ruleName 等于"criticalPagesLessThanDefault"的规则(有两个参数,第一个是默认的最小时

间,第二个是词值)

for(rule<-rules){

if (rule.ruleName.equals("criticalpagesLessThanDefault")){

//获取出规则种的第一个参数

defaultTime=rule.rulevalue0*1000/数据库配置的数据单位是秒

这里需要将其装换成毫秒

}

}

} 

2、设置一个计数器(记录小于自设值数据出现的次数)

Var lessDefaultTime=0

3、抽取出数据中的 iP 和数据的访问时间 url

//获取 ip

val ip =message.remoteAddr

//获取 url

val ur1=message.request

//获取 time

val time=message.timeIso8601 

4、遍历数据库中的关键页面的规则。

for(criticalPages<-criticalPagesList){

//使用url与规则进行匹配,

if(ur1.matches(criticalPages)){//若数据的 url 能够与规则的任意一个匹配成功,那么表示这个 url 是关键页面

flag=true

}eIse{//若数据的 ur1能够规则的任意一个没有匹配成功,那么表示这个 ur1不是关键页面

}

} 

5、使用 url 与规则进行匹配

若数据的 url 能够与规则的任意一个匹配成功,那么表示这个 url 就是关键页面,将 ip 和时间返回

若数据的 url 能够与规则的任意一个没有匹配成功,那么表示这个 url 不是关键页面,将“和"返回

if(fIag){//是关键页面,将 ip 和时间返回

(ip,time)

}else{

//不是关键页面,将“”和“”返回

(",")

} 

6、调用 groupByKeyAndWindow,或得到的结果是 key(iP)和 valuef 的 Iist(时间的 list)

groupByKeyAndwindow(Seconds(6),Seconds(2)) 

7、获取到 ip和时间的 list

//获取 ip

val ip=message.-1

//获取时间的1ist

val timelist=message._2

8、追历时间的 list,将这个字符串类型国际时间转换成普通时间(时间戳)

9、将多个时间戳添加到一个 list

for (time<-timeList){

//2019-05-14T09:08:50+08:00

/2019-05-1409:08:50

Val timestring=time.substring(0,time.indexof("+")).replace("T","")

/将 String 类型的时间转换成时间戳

val longTime=simple.parse(timeString).getTime

//9将多个时间戳添加到一个1ist

longTimeList.add(longTime)

} 

10、对这个时间影的 st 进行排序

差小 val longTimeListArray= longTimeList.toArray()

Util.Arrays.sort(longTimeListArray)

11、遍历每两个时间影,求取两个时间戳的时间差

12、用时间差与自设值进行对比,

若时间差小于自设值,那么计数器加1

若时间差大于自设值,跳过(什么都不做)

for (i<-1 until(longTimelistArnay.lengthy

val timeDiff=longTimelistArnay(i)tosthing.tolong-longTimeListArray(i-

1).tostring.toLong

//12用时间差与自设铺进行对财

//若时间差小于自设重用B么计数器1

if(timeDiff

lessDefaultTime=1

}

//若时间差大于自设值,跳过什都不做)

} 

13、将别 p 和计教器的值返回

(ip,lessDefaultTime) 

14、将最终数据转换为 Mp,便于后续提取、使用。

var lessDefaultTimesMap:collection.Map[String,Int]=null

lessDefaultTimes.foreachRpD(rdd=>{

lessDefaultTimesMap=rdd.collectAsMap()

})

相关文章
|
6月前
|
数据采集 机器学习/深度学习 安全
Python爬虫之极验滑动验证码的识别
了解极验滑动验证码、特点、识别思路、初始化、模拟点击、识别缺口、模拟拖动。
404 0
|
6月前
|
数据采集 Web App开发 文字识别
Python爬虫之点触验证码的识别
点触验证码识别思路,初始化,获取,识别。
182 0
Python爬虫之点触验证码的识别
|
6月前
|
数据采集 文字识别 开发者
Python爬虫之图形验证码的识别
python爬虫逆向图形验证码分析,处理和测试实战。
144 0
|
数据采集 人机交互 API
「Python」爬虫-7.验证码的识别
> 本文主要介绍如何处理一些网页中简单的验证码问题。~~(只提供简单的思路,随着技术的发展,一些验证码已经防范的非常好了,一般的解决方法可能过不了验证码这一关🤺~~
404 0
|
数据采集 SQL 消息中间件
数据预处理-历史爬虫判断-实现代码及效果|学习笔记
快速学习数据预处理-历史爬虫判断-实现代码及效果
142 0
数据预处理-历史爬虫判断-实现代码及效果|学习笔记
|
数据采集 监控 前端开发
数据预处理-历史爬虫判断-需求与实现思路|学习笔记
快速学习数据预处理-历史爬虫判断-需求与实现思路
130 0
数据预处理-历史爬虫判断-需求与实现思路|学习笔记
|
数据采集 算法 大数据
爬虫识别-总结及效果| 学习笔记
快速学习爬虫识别-总结及效果
爬虫识别-总结及效果| 学习笔记
|
数据采集 存储 消息中间件
爬虫识别-准备离线计算数据| 学习笔记
快速学习爬虫识别-准备离线计算数据
爬虫识别-准备离线计算数据| 学习笔记
|
数据采集 大数据 数据库
爬虫识别-指标碰撞-准备数据代码实现| 学习笔记
快速学习爬虫识别-指标碰撞-准备数据代码实现
爬虫识别-指标碰撞-准备数据代码实现| 学习笔记
|
23天前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
66 6