开发者学堂课程【大数据实战项目 - 反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第六阶段:爬虫识别-过滤非爬虫数据总结】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/674/detail/11726
爬虫识别-过滤非爬虫数据总结
思路与关键代码
1.设计
(1)打分后的数据的 rdd 调用 filter 对数据进行过滤
(2)添加此数据是否是爬虫的标记
(3)遍历经过打分后的数据(已经得出结论:这个数据是爬虫/不是爬虫)(它很可能是多个值,因为 flowsScore 是 Array 类型的)
(4)遍历每一个经过计算的数据,获取出每个数据的 flowsScore,遍历 flowsScore 内的isUpLimited(true/flase)
(5)若数据内的 isUpLimited (一个布尔类型的值)是 true ,那么表述这个数据是爬虫
将标记改为 true
(6)若数据内的 isUpLimited 是 false ,那么表述这个数据不是爬虫
标记不做任何改动(默认标记就是 false)
2.代码
(1)打分后的数据的 rdd 调用 filter 对数据进行过滤
Val allBlackDatas= antiCalculateResults.filter(message=>{
......
} (省略掉的是一堆代码)
(2)添加此数据是否是爬虫的标记
Var isspider=false
(3)遍历经过打分后的数据(已经得出结论:这个数据是爬虫/不是爬虫)
(4)遍历每一个经过计算的数据,获取出每个数据的 flowsScore,遍历flowsScore 内的 isUpLimited(true/flase)
(本身就是布尔类型的值)
Val flowsScores= message.flowsScore
For(flowsScore<-flowsScores){
... ...
}
第三步和第四步是一起进行的。
(5)若数据内的 isUpLimited 是 true ,那么表述这个数据是爬虫
将标记改为 true (根据这个值去进行判断)
If (flowsScore.isUpLimited){
Isspider=true
}
(6)若数据内的 isUpLimited 是 false ,那么表述这个数据不是爬虫
标记不做任何改动(默认标记就是 false)
无操作(默认标记就是 false)