爬虫识别-爬虫数据去重| 学习笔记

简介: 快速学习爬虫识别-爬虫数据去重

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

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


爬虫识别-爬虫数据去重

内容介绍:

一.黑名单数据去重

二.思路与关键代码

三.效果

 

一.黑名单数据去重

1.目标:

经过计算后的黑名单数据含有重复数据,在写入 redis 前,需要对这批数进行去重

2.需求

拿到黑名单数据 antiBlackResults 会发现,之前是每隔5分钟(这里是每6秒钟)进行的指标计算,此时出现的结果就会有重复的 ip 黑名单数据,在保存 Redis 之前,要将重复的数据进行过滤。(比如说,一批数据总共50条,20条非爬虫数据过滤掉之后,剩下30条爬虫数据,而这30条数据里面,很有可能是一个爬虫打过来的数据,因此要对爬虫数据去重。)

image.png

如图所示为数据处理流程,采集脚本数据后,向 Kafka 集群发送数据,每访问一次就发送一条数据,所以,30条爬虫数据来源于一只爬虫是极有可能的。所以在这一批数据里面,只是一个爬虫,但是它有30条数据,这30条数据针对它进行判断是否是爬虫,那么全都是爬虫,实际上,它返回的这30个结果一模一样,所以要进行去重。

3.设计

1.拿到黑名单数据进行 map, 获取出数据的 ip 和打分数据 (flowsScore) (包含了是否是爬虫)

flowsScore就是数据中的flowsScoreArray[FlowScoreResult]的值,

case class FlowScoreResult( flowId: string,

flowScore: Double,

flowLimitedScore: Double,

isUpLimited: Boolean,

flowStrategyCode: String,

hitRules: List[String],

hitRules: List[String],

hitTime: String)

flowsScore 包含了流程 ID ,分数,阈值,最终是不是爬虫,以及后面的 code 码,规则时间。

2.调用 reduceByKey 算子将相同 ip 的数据过滤,只保留最后一个(任意一个,这是因为相同 IP 的数据的结果都是一样的,只保留任何一个就可以,其余的全部去掉。)

 

二.思路与关键代码:

1. 遍历每一个黑名单数据,将数据的 ip 作为 key , flowsScore 作为 value 获取出来

2. 将两个数据返回

3. 调用 reducebykey((k,v)=>v) 取出相同的数据中的最后一个

(最后一个或第一个都是可以的)

//2 对爬虫数据进行去重操作

//2.1遍历每一个黑名单数据,将数据的 ip 作为 key , flowsScore 作为 value 获取出来

val blackDatas= allBlackDatas.map(message=>{

//拿到数据后,获取数据的 IP,因为 allBlackData 也是 Data 这种数据类型

val ip=message.ip

//获取数据的 flowsScore

val flowsScore=message.flowsScore

//2.2 将两个数据返回

(ip,flowsScore)

}).reduceByKey((k,v)=>v) //2.3.调用 reducebykey((k,v)=>v) 取出相同的数据中的最后一个或者最后一个(这里 kv 是两个值,我们返回的是 k, 返回 v 也可以。)

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

关掉前面的输出之后,现在只有这一个是可以输出的。

先运行数据预处理,再运行爬虫,然后运行爬虫识别。

 

三.效果

先运行数据预处理,再运行爬虫,然后运行爬虫识别。

image.png

如图所示,虽然有两个爬虫数据,但是因为两个爬虫数据一样,进行了去重,所以只输出了一个 flowsScore

相关文章
|
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月前
|
数据采集 数据挖掘 数据处理
Python中实现简单爬虫并处理数据
【9月更文挑战第31天】本文将引导读者理解如何通过Python创建一个简单的网络爬虫,并展示如何处理爬取的数据。我们将讨论爬虫的基本原理、使用requests和BeautifulSoup库进行网页抓取的方法,以及如何使用pandas对数据进行清洗和分析。文章旨在为初学者提供一个易于理解的实践指南,帮助他们快速掌握网络数据抓取的基本技能。
68 3
|
4月前
|
数据采集 JSON 数据格式
Python:南京地铁每日客流数据的爬虫实现
Python:南京地铁每日客流数据的爬虫实现
87 1
|
3月前
|
数据采集 Web App开发 JSON
爬虫实战小案例—获取喜马拉雅账号的关注数据和粉丝数据生成电子表格并实现批量关注或者取关然后生成表格文件
爬虫实战小案例—获取喜马拉雅账号的关注数据和粉丝数据生成电子表格并实现批量关注或者取关然后生成表格文件
70 0
|
3月前
|
数据采集
爬虫案例—抓取找歌词网站的按歌词找歌名数据
爬虫案例—抓取找歌词网站的按歌词找歌名数据
66 0