开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop框架搭建)第四阶段:数据预处理-历史爬虫判断-需求与实现思路】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/672/detail/11665
数据预处理-历史爬虫判断-需求与实现思路
历史爬虫判断
本质上第三阶段和第四阶段都属于预处理阶段,都属于蓝色部分,
在第四个阶段里做四件事情,第四阶段里面第一个历史爬虫的判断,是数据是否在历史爬虫中出现,还有是对数据进行结构化,因为前面把数据打散拆分开,然后再按照一定的格式拼接,拼接完以后再把数据推到 kafka 里面,推完以后要对整个数据预处理的所有过程进行性能的监控。
监控完以后会看到一个界面,里面有系统监控有实时流量转发、系统运行情况以及各列入流量转发情况,三个模块中会有数据,需要看三个数据分别是怎么从后端到前端的,需要看代码,这就是监控功能。再往后是查看 web 端查看监控信息,就是代码怎么从数据展现出来以后,从后台到前台展现出来是最后一个模块。
1、目标
判断当前批次的每一条数据是否在历史爬虫中出现过。
2、需求
在这个业务阶段,结合历史出现过的爬虫数据,我们需要针对此条数据的 ip 做一个判断,判断当前数据是否在历史爬虫中出现过。若出现过(高频IP),返回 True,反之返回 False
3、设计
(1)在 scc 初始化后,加载 kafka 数据前,初始化加载数据库黑名单数据到广播变量
(2)在加载 kafka 数据后,通过 Redis判断是否需要更新黑名单广播变量数据
(3)通过 remoteaddr 和 ip 黑名单数据进行高频 IP 判断,并返回标记(相等代表出现过,不相等代表没有出现过)
(4)高频 IP 表 itcast_ip_blacklist
IP 的 ID、历史出现过的 IP 名字、IP 以及级别。
属性打开设计表,第一个没说明 ID,第二个也没有,第三个0、1、2代表高频、中频和低频。然后里面的 IP 是真正历史出现过的 IP,假设说有把这三个读到程序里面,实际上又开始走流程。
4、代码
历史爬虫判断
(1)目标
结合历史出现过的爬虫数据,判断当前批次的每一条数据是否在历史爬虫中出现过。若出现过,返回 True,反之返回 False
(2)思路与关键代码:
①读取数据库内历史出现过的黑名单数据到预处理程序中
②将历史爬虫添加到广播变量、并循环判断是否需要更新(内含多个步骤,此处省略)
③将数据中的 ip 与历史出现过的黑名单 IP 数据进行对比,判断是否相等
④若有任意一个是相等的返回 true,反之返回 false
//7 历史爬虫判断
//1读取数据库内历史出现过的黑名单数据到预处理程序中
//2将历史爬虫添加到广播变量、并循环判断是否需要更新(内含多个步骤,此处省略)
//3将数据中的 ip 与历史出现过的黑名单 IP 数据进行对比,判断是否相等
//4若有任意一个是相等的返回 true ,反之返回 false