爬虫识别-过滤非爬虫数据| 学习笔记

简介: 快速学习爬虫识别-过滤非爬虫数据

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

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


爬虫识别-过滤非爬虫数据

内容介绍:

一.踢除非黑名单数据

二.数据入库代码

三.效果演示

 

一.踢除非黑名单数据

image.png

如图所示,爬虫识别完成后,下一步为数据入库。数据入库分为非爬虫过滤,爬虫去重以及写入 Redis 3步。经过这三步我们才能将数据入库。

1.目标:

经过计算后的数据含有非黑名单数据,需要将其踢除掉

2.需求

之前,我们已经计算出了整个流程的打分,也已经进行了是否为黑名单数据的标记(是否是爬虫),现在,我们需要踢除黑名单数据,只保留黑名单数据,将黑名单数据进行 Redis 推送。

3.非黑名单数据的产生

//爬虫识别

//1 指标碰撞

//2 最终的打分

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

Val antiCalculateResults=processedData.map(message=>{

在遍历数据时,使用的是 processedData ,在进行1-8个数据的计算的时候,使用的是同一批封装成 processedDate 的数据,返回的也是这一批针对每一行数据的结果。比如,一批数据共有50条数据,30条是爬虫数据,20条不是爬虫数据即正常的用户数据,需要拿50次数据,再进行50次判断,得到50批最终结果,返回也是50条数据,其中,30条爬虫数据有结果,这30条爬虫当中 flowScore 里面的 isUpLimited 决定是否为爬虫,30个是爬虫,20个不是爬虫,这20个是需要过滤掉的,也就是说只用在意爬虫数据即可,非爬虫的需要踢除掉。

case class FlowScoreResult( flowId: string,

flowScore: Double,

flowLimitedScore: Double,

isUpLimited: Boolean,

flowStrategyCode: String,

hitRules: List[String],

hitRules: List[String],

hitTime: String)

已经算出流程 ID ,最终得分,流程阈值,是否是爬虫( True/False),以及后面这几个参数。得到  FlowScoreResult 后,最终的全部结果就得到了,然后就返回到 antiCalculateResult 中。

4.设计

1)获取计算结果 antiCalculateResults 进行 filter

2)添加表示数据是否是爬虫的标记

3)使用 flowScore isUpLimited 属性进行判断

a) isUpLimited true, 标记为 true

b) isUpLimited false, 标记为 false

是爬虫标记就是 true,不是爬虫标记就是 false

5.思路与关键代码:

1)打分后的数据的 rdd 调用 filter 对数据进行过滤

2)添加此数据是否是爬虫的标记

3)遍历经过打分后的数据(已经得出结论:这个数据是爬虫/不是爬虫)(它很可能是多个值,因为 flowsScore Array 类型的)

4)遍历每一个经过计算的数据,获取出每个数据的 flowsScore,遍历 flowsScore 内的isUpLimited(true/flase)

5)若数据内的 isUpLimited true ,那么表述这个数据是爬虫

将标记改为 true

6)若数据内的 isUpLimited false ,那么表述这个数据不是爬虫

标记不做任何改动(默认标记就是 false

 

二.数据入库代码

//数据入库

//1 过滤非爬虫数据(只保留爬虫数据)

//1.1.打分后的数据的 rdd 调用 filter 对数据进行过滤(返回的都是爬虫数据)

Val allBlackDatas= antiCalculateResults.filter(message=>{

filter 需要返回一个 true/false)(这里返回的所有都是爬虫数据)

//1.2.添加此数据是否是爬虫的标记

Var isspider=false var 代表可变的,默认是 false

//1.3.遍历经过打分后的数据(已经得出结论:这个数据是爬虫/不是爬虫)

//1.4.遍历每一个经过计算的数据,获取出每个数据的 flowsScore,遍历 flowsScore 内的 isUpLimited(true/flase)

Val flowsScores= message.flowsScore

For(flowsScore<-flowsScores){

(因为它是 Array 所以在这里需要遍历一下)

//1.5.若数据内的 isUpLimited true ,那么表述这个数据是爬虫,将标记改为 true isUpLimited 本身是布尔类型)

If (flowsScore.isUpLimited){  

Isspider=true

}

//1.6.若数据内的 isUpLimited false ,那么表述这个数据不是爬虫,标记不做任何改动(默认标记就是 false

}

Isspider

})

allBlackDatas.foreachRDD(rdd=>rdd.foreach(println)) //输出

如果有爬虫,则有爬虫数组的返回和输出;如果没有爬虫,则没有返回和输出。前面的爬虫识别也有一个输出,关闭后,爬虫识别代码里面只有这一个输出,即纯爬虫数据作为输出。至此,所有的数据都已处理完毕。

 

三.效果演示

image.png

如图所示,执行后,当第一组数据17.5<20(阈值)时,不是爬虫,没有输出。虽然这组数据没有输出,但是它也完整地运行了一遍程序。

 image.png

当第二组数据22.5>20,是爬虫时,就有数据,就能够将数据输出。

相关文章
|
3月前
|
数据采集 API 数据处理
Objective-C 音频爬虫:实时接收数据的 didReceiveData: 方法
Objective-C 音频爬虫:实时接收数据的 didReceiveData: 方法
|
10天前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
20天前
|
数据采集 安全 定位技术
使用代理IP爬虫时数据不完整的原因探讨
在信息化时代,互联网成为生活的重要部分。使用HTTP代理爬取数据时,可能会遇到失败情况,如代理IP失效、速度慢、目标网站策略、请求频率过高、地理位置不当、网络连接问题、代理配置错误和目标网站内容变化等。解决方法包括更换代理IP、调整请求频率、检查配置及目标网站变化。
53 11
|
2月前
|
数据采集 JSON JavaScript
如何通过PHP爬虫模拟表单提交,抓取隐藏数据
本文介绍了如何使用PHP模拟表单提交并结合代理IP技术抓取京东商品的实时名称和价格,特别是在电商大促期间的数据采集需求。通过cURL发送POST请求,设置User-Agent和Cookie,使用代理IP绕过限制,解析返回数据,展示了完整代码示例。
如何通过PHP爬虫模拟表单提交,抓取隐藏数据
|
2月前
|
数据采集 JavaScript 程序员
探索CSDN博客数据:使用Python爬虫技术
本文介绍了如何利用Python的requests和pyquery库爬取CSDN博客数据,包括环境准备、代码解析及注意事项,适合初学者学习。
93 0
|
3月前
|
消息中间件 数据采集 数据库
小说爬虫-03 爬取章节的详细内容并保存 将章节URL推送至RabbitMQ Scrapy消费MQ 对数据进行爬取后写入SQLite
小说爬虫-03 爬取章节的详细内容并保存 将章节URL推送至RabbitMQ Scrapy消费MQ 对数据进行爬取后写入SQLite
42 1
|
3月前
|
数据采集 Web App开发 JSON
爬虫实战小案例—获取喜马拉雅账号的关注数据和粉丝数据生成电子表格并实现批量关注或者取关然后生成表格文件
爬虫实战小案例—获取喜马拉雅账号的关注数据和粉丝数据生成电子表格并实现批量关注或者取关然后生成表格文件
70 0
|
2月前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
121 6
|
5月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
256 4
|
5月前
|
数据采集 存储 搜索推荐
打造个性化网页爬虫:从零开始的Python教程
【8月更文挑战第31天】在数字信息的海洋中,网页爬虫是一艘能够自动搜集网络数据的神奇船只。本文将引导你启航,用Python语言建造属于你自己的网页爬虫。我们将一起探索如何从无到有,一步步构建一个能够抓取、解析并存储网页数据的基础爬虫。文章不仅分享代码,更带你理解背后的逻辑,让你能在遇到问题时自行找到解决方案。无论你是编程新手还是有一定基础的开发者,这篇文章都会为你打开一扇通往数据世界的新窗。