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

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

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

相关文章
|
8月前
|
数据采集 NoSQL 关系型数据库
Python爬虫去重策略:增量爬取与历史数据比对
Python爬虫去重策略:增量爬取与历史数据比对
|
6月前
|
数据采集 Web App开发 JavaScript
Python爬虫解析动态网页:从渲染到数据提取
Python爬虫解析动态网页:从渲染到数据提取
|
7月前
|
数据采集 存储 NoSQL
分布式爬虫去重:Python + Redis实现高效URL去重
分布式爬虫去重:Python + Redis实现高效URL去重
|
8月前
|
数据采集 存储 缓存
Python爬虫与代理IP:高效抓取数据的实战指南
在数据驱动的时代,网络爬虫是获取信息的重要工具。本文详解如何用Python结合代理IP抓取数据:从基础概念(爬虫原理与代理作用)到环境搭建(核心库与代理选择),再到实战步骤(单线程、多线程及Scrapy框架应用)。同时探讨反爬策略、数据处理与存储,并强调伦理与法律边界。最后分享性能优化技巧,助您高效抓取公开数据,实现技术与伦理的平衡。
422 4
|
8月前
|
数据采集 云安全 人工智能
|
8月前
|
数据采集 搜索推荐 API
Python 原生爬虫教程:京东商品列表页面数据API
京东商品列表API是电商大数据分析的重要工具,支持开发者、商家和研究人员获取京东平台商品数据。通过关键词搜索、分类筛选、价格区间等条件,可返回多维度商品信息(如名称、价格、销量等),适用于市场调研与推荐系统开发。本文介绍其功能并提供Python请求示例。接口采用HTTP GET/POST方式,支持分页、排序等功能,满足多样化数据需求。
|
9月前
|
Web App开发 数据采集 前端开发
Python + Chrome 爬虫:如何抓取 AJAX 动态加载数据?
Python + Chrome 爬虫:如何抓取 AJAX 动态加载数据?
|
9月前
|
数据采集 XML 存储
Python爬虫实战:一键采集电商数据,掌握市场动态!
这个爬虫还挺实用,不光能爬电商数据,改改解析规则,啥数据都能爬。写爬虫最重要的是要有耐心,遇到问题别着急,慢慢调试就成。代码写好了,运行起来那叫一个爽,分分钟几千条数据到手。
|
8月前
|
数据采集 API 数据格式
Python 原生爬虫教程:京东商品详情页面数据API
本文介绍京东商品详情API在电商领域的应用价值及功能。该API通过商品ID获取详细信息,如基本信息、价格、库存、描述和用户评价等,支持HTTP请求(GET/POST),返回JSON或XML格式数据。对于商家优化策略、开发者构建应用(如比价网站)以及消费者快速了解商品均有重要意义。研究此API有助于推动电商业务创新与发展。
|
9月前
|
数据采集 存储 安全
Python爬虫实战:利用短效代理IP爬取京东母婴纸尿裤数据,多线程池并行处理方案详解
本文分享了一套结合青果网络短效代理IP和多线程池技术的电商数据爬取方案,针对京东母婴纸尿裤类目商品信息进行高效采集。通过动态代理IP规避访问限制,利用多线程提升抓取效率,同时确保数据采集的安全性和合法性。方案详细介绍了爬虫开发步骤、网页结构分析及代码实现,适用于大规模电商数据采集场景。