爬虫识别-Redis 爬虫数据备份-准备数据| 学习笔记

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 快速学习爬虫识别-Redis 爬虫数据备份-准备数据

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

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


爬虫识别-Redis 爬虫数据备份-准备数据

准备数据

将爬虫数据写到 Redis 中后,流程中的第六步进行完成:

image.png

识别出来的爬虫写到 Redis 中后,爬虫识别的最终目标已经完成,要实现反爬虫,就需要将爬虫计算出来,此时已经计算完成,后续如何反爬虫较为简单,例如离线计算。第六阶段除了实现计算识别之外,还要实现其他事情。从总体流程上看,爬虫识别已经完成。回到第六阶段的最初模块,最初模块如下:

1、规则匹配和打分并进行阈值判断

2、剔除非黑名单数据

3、黑名单数据去重

4、黑名单 Redis 数据恢复

5、黑名单数据备份到 Redis

6、黑名单数据实时存储 hdfs,用于 Redis 数据恢复

7、存储规则计算结果RDDHDFS

已经实现前三步,即黑名单数据备份到 Redis,第四步黑名单radius数据恢复和第六步黑名单数据实时存储 hdfs,用于 Redis 数据恢复和第七步存储规则计算结果Rdd HDFS 中还未完成。将数据写入到 Redis 中,数据可能会丢失,所以就需要将其备份到 HDFS 中,所以就需要完成第六步数据的备份。第四步和第六步完成之后,一整套的Redis数据写入、防止丢失、备份就已经存在,第七步就是存储规则计算结果 Rdd HDFS 中。最核心的是爬虫识别,爬虫识别完成之后,其他功能模块的代码都不太重要。但是面试时如果询问Redis如果丢失了数据,需要知道写入时做了备份,如果丢了,可以进行恢复。

黑名单数据实时存储 hdfs,用于Redis数据恢复。由于 Redis 是基于内存的爬虫数据,写入 Redis 有数据丢失的风险,所以需要将爬虫数据写入 Redis 的同时也写入hdfs,用于当Redis丢失数据时的恢复。设计过程如下:

1、构建 data Fream

2、存储 data Fream

最后将 data Fream 的数据写入到 HDFS 中,此时涉及到构建 date Fream 的过程。首先准备数据,其次填充 array,最后调用写入方法。最关键的是调用写入方法。首先准备存储数据的 array,由于需要写入到 HDFS 中,使用 sparksql 计数。代码如下:

//黑名单DatpFrame-备份到HDFS

//写入Redis前,准备存储数据的Array

val antiBlackListDFR= new ArrayBuffer[Row]()

在写入 Redis 的同时封装数据。在数据入库的源代码中,首先遍历 Rdd,其次将Rdd序列化,然后遍历 BLACKdata数据。在遍历出数据之后,加上黑名单DatpFrame-备份到 HDFS。首先准备 array buffer,由于需要写入到radius,所以需要使用变量接收数据。准备好变量之后,将 key value 写入 Redis 中,写入到Redis 中后,立刻将其进行封装,也就是填充 array,代码如下:

//添加黑名单DataFrame-备份到ArrayBuffer

//写入redis后立刻将数据添加到antiBlackListDFR

antiBlackListDFR.append(Row(((

PropertiesUtil.getStringByKey(

"cluster.exptime.anti black list",

"jedisConfig.properties").toLong)

* 1000

+ System.currentTimeMilsl().toString,

blackListKey,

blackListValue))

将数据添加到 Redis 中之后,立马将数据写入到之前创建的变量中。添加的数据有Keyvalue,首先在其中定义了row,在之前声明变量时就是row。由于使用了 Sparksql,需要有一行,其中Key value就是一行,遍历一次就有一行,而此时套用了for循环,遍历遍历时,将array填满,填充的动作在for循环之中,要注意代码添加的位置。添加的数据有读取工具,读取了反扒黑名单数据有效期。在写入数据写入了3600。所以此时也需要使用这个时间。将时间读取之后转换为long乘以1000,再加上当前时间。还有Keyvalue。在该array buffer中第1个是时间,第2个是Key,第3个是value,此时将其添加到array中,数据准备完成。接下来将数据写入,调用写入方法。此时需要注意调用写入方法不能在for循环中写,因为是为了封装数据填充array,之前的arrayfor循环外。代码如下:

//增加黑名单数据实时存储到HDFS的功能黑名单数据持久化用于Redis数据恢复BlackListToHDFS.saveAntiBlackList(sc.parallelize(antiBlackListDFR), sqlContext)

首先引入 array list。在util中的 hdfs BLACKlistHDFS,也就是代码中对应的BLACKlistHDFS。此时需要一个参数 SQLcontext,需要创建该参数,回到计算方法最上方实例SQLcontext

//实例SQLcontext

val sqlContext=new SQLContext(sc)

SQLcontext实例完成,此时已经不报错。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
7天前
|
数据采集 存储 API
网络爬虫与数据采集:使用Python自动化获取网页数据
【4月更文挑战第12天】本文介绍了Python网络爬虫的基础知识,包括网络爬虫概念(请求网页、解析、存储数据和处理异常)和Python常用的爬虫库requests(发送HTTP请求)与BeautifulSoup(解析HTML)。通过基本流程示例展示了如何导入库、发送请求、解析网页、提取数据、存储数据及处理异常。还提到了Python爬虫的实际应用,如获取新闻数据和商品信息。
|
9天前
|
缓存 NoSQL 关系型数据库
13- Redis和Mysql如何保证数据⼀致?
该内容讨论了保证Redis和MySQL数据一致性的几种策略。首先提到的两种方法存在不一致风险:先更新MySQL再更新Redis,或先删Redis再更新MySQL。第三种方案是通过MQ异步同步以达到最终一致性,适用于一致性要求较高的场景。项目中根据不同业务需求选择不同方案,如对一致性要求不高的情况不做处理,时效性数据设置过期时间,高一致性需求则使用MQ确保同步,最严格的情况可能涉及分布式事务(如Seata的TCC模式)。
35 6
|
9天前
|
NoSQL Redis
05- Redis的数据淘汰策略有哪些 ?
Redis 提供了 8 种数据淘汰策略:挥发性 LRU、LFU 和 TTL(针对有过期时间的数据),挥发性随机淘汰,以及全库的 LRU、LFU 随机淘汰,用于在内存不足时选择删除。另外,还有不淘汰策略(no-eviction),允许新写入操作报错而非删除数据。
11 1
|
1月前
|
数据采集 存储 XML
给你一个具体的网站,你会如何设计爬虫来抓取数据?
【2月更文挑战第23天】【2月更文挑战第75篇】给你一个具体的网站,你会如何设计爬虫来抓取数据?
|
1月前
|
数据采集 存储 XML
深入浅出:基于Python的网络数据爬虫开发指南
【2月更文挑战第23天】 在数字时代,数据已成为新的石油。企业和个人都寻求通过各种手段获取互联网上的宝贵信息。本文将深入探讨网络爬虫的构建与优化,一种自动化工具,用于从网页上抓取并提取大量数据。我们将重点介绍Python语言中的相关库和技术,以及如何高效、合法地收集网络数据。文章不仅为初学者提供入门指导,也为有经验的开发者提供进阶技巧,确保读者能够在遵守网络伦理和法规的前提下,充分利用网络数据资源。
|
1月前
|
数据采集 机器学习/深度学习 安全
Python爬虫之极验滑动验证码的识别
了解极验滑动验证码、特点、识别思路、初始化、模拟点击、识别缺口、模拟拖动。
59 0
|
16天前
|
NoSQL Redis
Redis事务:保证数据操作的一致性和可靠性
Redis事务:保证数据操作的一致性和可靠性
|
11天前
|
存储 NoSQL 算法
redis数据持久化
redis数据持久化
|
16天前
|
NoSQL 安全 网络安全
保护Redis:建立铁壁般的安全防线,守护你的数据财富
保护Redis:建立铁壁般的安全防线,守护你的数据财富
|
16天前
|
消息中间件 存储 NoSQL
Redis Stream: 实时消息处理的利器,让你的数据流畅又可靠!
Redis Stream: 实时消息处理的利器,让你的数据流畅又可靠!