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

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

开发者学堂课程【大数据实战项目 - 反爬虫系统(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

相关文章
|
9天前
|
数据采集 存储 监控
网络爬虫的最佳实践:结合 set_time_limit() 与 setTrafficLimit() 抓取云盘数据
本文探讨了如何利用 PHP 的 `set_time_limit()` 与爬虫工具的 `setTrafficLimit()` 方法,结合多线程和代理 IP 技术,高效稳定地抓取百度云盘的公开资源。通过设置脚本执行时间和流量限制,使用多线程提高抓取效率,并通过代理 IP 防止 IP 封禁,确保长时间稳定运行。文章还提供了示例代码,展示了如何具体实现这一过程,并加入了数据分类统计功能以监控抓取效果。
46 16
网络爬虫的最佳实践:结合 set_time_limit() 与 setTrafficLimit() 抓取云盘数据
|
3天前
|
数据采集 存储 JavaScript
构建您的第一个Python网络爬虫:抓取、解析与存储数据
【9月更文挑战第24天】在数字时代,数据是新的金矿。本文将引导您使用Python编写一个简单的网络爬虫,从互联网上自动抓取信息。我们将介绍如何使用requests库获取网页内容,BeautifulSoup进行HTML解析,以及如何将数据存储到文件或数据库中。无论您是数据分析师、研究人员还是对编程感兴趣的新手,这篇文章都将为您提供一个实用的入门指南。拿起键盘,让我们开始挖掘互联网的宝藏吧!
|
27天前
|
数据采集 JavaScript 前端开发
构建简易Python爬虫:抓取网页数据入门指南
【8月更文挑战第31天】在数字信息的时代,数据抓取成为获取网络资源的重要手段。本文将引导你通过Python编写一个简单的网页爬虫,从零基础到实现数据抓取的全过程。我们将一起探索如何利用Python的requests库进行网络请求,使用BeautifulSoup库解析HTML文档,并最终提取出有价值的数据。无论你是编程新手还是有一定基础的开发者,这篇文章都将为你打开数据抓取的大门。
|
1月前
|
数据采集
爬虫抓取数据过程中代理IP频繁掉线:以Kookeey为例的解决方案
在数据抓取过程中,代理IP不可或缺,但其频繁掉线问题严重影响效率。本文以Kookeey为例,探讨解决之道:1)深入理解掉线原因,审慎选择稳定的服务商; 2)保持代理IP更新并合理配置使用参数; 3)在程序中集成错误处理与重试逻辑; 4)必要时升级至更优质的服务; 5)主动与服务商沟通寻求支持; 6)探索替代抓取策略,如调整抓取节奏或采用分布式架构。这些措施有助于显著提升抓取成功率及稳定性。
|
1月前
|
数据采集 数据挖掘 数据处理
Python爬虫开发:爬取简单的网页数据
本文详细介绍了如何使用Python爬取简单的网页数据,以掘金为例,展示了从发送HTTP请求、解析HTML文档到提取和保存数据的完整过程。通过这个示例,你可以掌握基本的网页爬取技巧,为后续的数据分析打下基础。希望本文对你有所帮助。
|
27天前
|
数据采集 存储 数据库
Python中实现简单爬虫与数据解析
【8月更文挑战第31天】在数字化时代的浪潮中,数据成为了新的石油。本文将带领读者通过Python编程语言,从零开始构建一个简单的网络爬虫,并展示如何对爬取的数据进行解析和处理。我们将一起探索请求网站、解析HTML以及存储数据的基础知识,让每个人都能成为自己数据故事的讲述者。
|
28天前
|
数据采集 JavaScript 前端开发
构建你的第一个Python爬虫:抓取网页数据入门指南
【8月更文挑战第31天】在数字时代,数据是新的石油。本文将引导初学者通过简单的步骤,使用Python编程语言创建一个基础的网络爬虫程序。我们将探索如何从网络上提取信息,并理解背后的原理。无论你是编程新手还是想要扩展你的技术工具箱,这篇文章都将为你提供一条清晰的道路,让你学会编写能够自动获取网络数据的脚本。准备好开始你的网络数据抓取之旅了吗?让我们现在就开始吧!
|
28天前
|
数据采集 JavaScript 前端开发
Python 爬虫实战:抓取和解析网页数据
【8月更文挑战第31天】本文将引导你通过Python编写一个简单的网络爬虫,从网页中抓取并解析数据。我们将使用requests库获取网页内容,然后利用BeautifulSoup进行解析。通过本教程,你不仅能够学习到如何自动化地从网站收集信息,还能理解数据处理的基本概念。无论你是编程新手还是希望扩展你的技术工具箱,这篇文章都将为你提供有价值的见解。
|
28天前
|
数据采集 存储 JavaScript
构建你的首个Python网络爬虫:抓取、解析与存储数据
【8月更文挑战第31天】在数字时代的浪潮中,数据成为了新的石油。了解如何从互联网的海洋中提取有价值的信息,是每个技术爱好者的必备技能。本文将引导你通过Python编程语言,利用其强大的库支持,一步步构建出你自己的网络爬虫。我们将探索网页请求、内容解析和数据存储等关键环节,并附上代码示例,让你轻松入门网络数据采集的世界。
|
28天前
|
数据采集 PHP
PHP中实现简单爬虫与数据解析
【8月更文挑战第31天】在互联网的海洋里,爬虫技术如同一艘探索船,帮助我们搜集和理解信息。本文将带你通过PHP语言,轻松实现一个简单的网页内容抓取工具,并展示如何从抓取的数据中解析出有用信息。我们将一起航行在代码的波浪中,体验从无到有构建一个基本爬虫的过程。