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

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

开发者学堂课程【大数据实战项目 - 反爬虫系统(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,是爬虫时,就有数据,就能够将数据输出。

相关文章
|
8月前
|
数据采集 NoSQL 关系型数据库
Python爬虫去重策略:增量爬取与历史数据比对
Python爬虫去重策略:增量爬取与历史数据比对
|
6月前
|
数据采集 Web App开发 JavaScript
Python爬虫解析动态网页:从渲染到数据提取
Python爬虫解析动态网页:从渲染到数据提取
|
8月前
|
数据采集 存储 缓存
Python爬虫与代理IP:高效抓取数据的实战指南
在数据驱动的时代,网络爬虫是获取信息的重要工具。本文详解如何用Python结合代理IP抓取数据:从基础概念(爬虫原理与代理作用)到环境搭建(核心库与代理选择),再到实战步骤(单线程、多线程及Scrapy框架应用)。同时探讨反爬策略、数据处理与存储,并强调伦理与法律边界。最后分享性能优化技巧,助您高效抓取公开数据,实现技术与伦理的平衡。
423 4
|
8月前
|
数据采集 云安全 人工智能
|
8月前
|
数据采集 搜索推荐 API
Python 原生爬虫教程:京东商品列表页面数据API
京东商品列表API是电商大数据分析的重要工具,支持开发者、商家和研究人员获取京东平台商品数据。通过关键词搜索、分类筛选、价格区间等条件,可返回多维度商品信息(如名称、价格、销量等),适用于市场调研与推荐系统开发。本文介绍其功能并提供Python请求示例。接口采用HTTP GET/POST方式,支持分页、排序等功能,满足多样化数据需求。
|
9月前
|
Web App开发 数据采集 前端开发
Python + Chrome 爬虫:如何抓取 AJAX 动态加载数据?
Python + Chrome 爬虫:如何抓取 AJAX 动态加载数据?
|
8月前
|
数据采集 API 数据格式
Python 原生爬虫教程:京东商品详情页面数据API
本文介绍京东商品详情API在电商领域的应用价值及功能。该API通过商品ID获取详细信息,如基本信息、价格、库存、描述和用户评价等,支持HTTP请求(GET/POST),返回JSON或XML格式数据。对于商家优化策略、开发者构建应用(如比价网站)以及消费者快速了解商品均有重要意义。研究此API有助于推动电商业务创新与发展。
|
8月前
|
数据采集 测试技术 C++
无headers爬虫 vs 带headers爬虫:Python性能对比
无headers爬虫 vs 带headers爬虫:Python性能对比
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
559 6
|
8月前
|
数据采集 存储 监控
Python 原生爬虫教程:网络爬虫的基本概念和认知
网络爬虫是一种自动抓取互联网信息的程序,广泛应用于搜索引擎、数据采集、新闻聚合和价格监控等领域。其工作流程包括 URL 调度、HTTP 请求、页面下载、解析、数据存储及新 URL 发现。Python 因其丰富的库(如 requests、BeautifulSoup、Scrapy)和简洁语法成为爬虫开发的首选语言。然而,在使用爬虫时需注意法律与道德问题,例如遵守 robots.txt 规则、控制请求频率以及合法使用数据,以确保爬虫技术健康有序发展。
1192 31