爬虫识别-小于自设值的次数-代码实现读取默认时间|学习笔记

简介: 快速学习爬虫识别-小于自设值的次数-代码实现读取默认时间。

开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第五阶段爬虫识别-小于自设值的次数-代码实现读取默认时间】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/673/detail/11712


爬虫识别-小于自设值的次数-代码实现读取默认时间

 

前面将指标思路讲解完成,本次主要学习代码实现。

/按 IP 地址聚合-

某个 iP,5分钟内小于最短访问间隔(自设)的关键页而查询次数

DeflessDefaultTimes(processedData:DStream[ProcessedData],criticalPagesList:ArrayBuffer[string],flowList:ArrayBuffer[Flowcollocation]):Unit = 

1. 获取企业系统内的自定义的最小时间间隔

图内:小于最短访问时间间隔1或2,将其中数据拿出

image.png

最短间隔在图中红色框即规则内。规则包含在蓝色框流程内部。存在多个流程,流程内部可配置多个流程。先遍历流程,其次获取规则,查找。

 image.png

2.遍历:流程,获取流程内的规则

for(flow<-flowList){(遍历流程中的一个流程)

不是多个流程的原因:确实存在很多个流程,一个流程内有多个数据,但是当数据放入程序中只存在一个。多个流程是为了应对不同的节假日而设置的不同流程,存在专门针对各种节假日,正常情况下。只有一个在正常运行,其他并未运行。可以配置多个,但只有一个是运行状态。

 image.png

在查询流程即读取流程数据时,存在状态说明,此时状态说明 status=0,读取流程状态是0的状态数据,

 image.png

在流程表可看到状态 status=0,Process_info 右键设计表打开可观察到0表示正在运行,1表示暂停,所以 status=0(表示正在运行)。多个流程正常情况下只有一个流程是正在运行。

 image.png

真正读取到的数据只有一条。

For(flow<-flowList){

}

真正只有一条数据,所以在此遍历处一条内容。

//遍历流程,获取流程内的规则

调用 flow.rules(rules 为数据库8个规则中的一个)此时得到规则。

找到规则中 ruleName 等于"criticalPagesLessThanDefault"的规则,先进行遍历,(存在8个规则,在八个规则内,只有小于最短访问间隔有两个参数。需要在八个规则中依次遍历,找到 rule name)

此时拿到某一个规则将其进行判断,如果

ruleName="criticalPagesLessThanDefault,表示有两个参数,第一个是默认的最小时间,第二个是阈值.

rule.value0表示第一个参数(最小时间间隔),Rulevalue1表示阈值

image.png

//获取出规则的第一个参数(最小时间间隔)

Var defaultTime=0(默认),利用 default 接收;Double=0(Double 类型)

如何知道名称为 criticalPagesLessThanDefault,在八个规则中,已知有一个规则存在两个属性:最小访问间隔和页面查询次数,可以在数据库中进行查询,含有两个规则的数据名称,如下图,寻找 arg 0arg1都存在数据的id,此时可以观察到 rulename=4,依次往下寻找还可以观察到同时存在 arg0,1的 rule name=4,此时进入表内寻找rule name=4的 rulename 名称,可发现名称为 criticalPagesLessThanDefault。

image.png

val ruleType=rs.getstring(columnLabel="rule_type")

val rulestatus =rs.getInt(columnLabel="status")

val rulecrawlerType =rs.getInt(columnLabel="crawler_type")

val rulevalue0=rs.getDouble(columnLabel="arg")

val rulevalue1=rs.getDouble(columnLabel="arg1")

val rulescore =rs.getInt(columnLabel ="score")

val rulecollocation new RuleCollocation(ruleId,flowId,rule_real_name,ruleType,rulestatus,rule

list += rulecollocation

数据关联,关联后读取完毕,使用两个表的 rule_name 进行关联,将读取出的第一个第二个数据封装进入下面代码内:

case class RuleCollocation(ruleId:String,//规则 id

flowId:string,//流程 id

ruleName:String,//规则名

ruleType:string,//规则类型

rulestatus:Int,//规则状态

ruleCrawlerType:Int,//规则爬虫类型

rulevalue0:Double,//参数

rulevalue1:Doub1e,//参数

ruleScore:Int/∥打分

){

} 

此数据内的第三个数据是规则名 rule_name。也就是数据库内的 rule_name,数据库内配置的是4。但是在封装时传进去的不是 rule_name,而是 real_name 真正的名字而不是4。所以在读取时虽然是 rule_name 但实际是真正的名字。 

此时第一个参数已读取完毕.

//实例最小时间间隔

var defaultTime:Double=0

//

获取企业系统内的自定义的最小时间间隔

for(flow<-flowlist){

//追历流程,获取流程内的规则

val rules=flow.rules

/找到规则 ruleName 等于"criticalPagesLessThanDefault“的规则(有两个参数,第一个是默以的最小时间,第二个是阈值)

for(rule<-rules){

if (rule.ruleName.equals("criticalPagesLessThanDefault")){

//获取出规则种的第一个参数

defaultTime=rule.rulevalue0}

}

}

相关文章
|
7月前
|
数据采集 开发者
如何编写有效的爬虫代码来避免网站的反爬虫机制?
如何编写有效的爬虫代码来避免网站的反爬虫机制?
92 1
|
7月前
|
数据采集 Python
【Python自动化】多线程BFS站点结构爬虫代码,支持中断恢复,带注释
【Python自动化】多线程BFS站点结构爬虫代码,支持中断恢复,带注释
77 0
|
7月前
|
数据采集 机器学习/深度学习 安全
Python爬虫之极验滑动验证码的识别
了解极验滑动验证码、特点、识别思路、初始化、模拟点击、识别缺口、模拟拖动。
445 0
|
3月前
|
数据采集 编解码
jupyter-notebook编写爬虫代码的时候cookie值自动转码的问题
jupyter-notebook编写爬虫代码的时候cookie值自动转码的问题
37 0
|
4月前
|
数据采集 存储 JSON
推荐3款自动爬虫神器,再也不用手撸代码了
推荐3款自动爬虫神器,再也不用手撸代码了
|
6月前
|
数据采集 存储 JavaScript
(2024)豆瓣电影TOP250爬虫详细讲解和代码
这是一个关于如何用Python爬取2024年豆瓣电影Top250的详细教程。教程涵盖了生成分页URL列表和解析页面以获取电影信息的函数。`getAllPageUrl()` 生成前10页的链接,而`getMoiveListByUrl()` 使用PyQuery解析HTML,提取电影标题、封面、评价数和评分。代码示例展示了测试这些函数的方法,输出包括电影详情的字典列表。
346 3
|
6月前
|
数据采集
技术心得:我在写爬虫的验证码识别方案之有个平台叫无限代码
技术心得:我在写爬虫的验证码识别方案之有个平台叫无限代码
67 0
|
7月前
|
数据采集 Web App开发 文字识别
Python爬虫之点触验证码的识别
点触验证码识别思路,初始化,获取,识别。
201 0
Python爬虫之点触验证码的识别
|
7月前
|
数据采集 文字识别 开发者
Python爬虫之图形验证码的识别
python爬虫逆向图形验证码分析,处理和测试实战。
162 0
|
7月前
|
数据采集 存储 JSON
解析Perl爬虫代码:使用WWW::Mechanize::PhantomJS库爬取stackoverflow.com的详细步骤
在这篇文章中,我们将探讨如何使用Perl语言和WWW::Mechanize::PhantomJS库来爬取网站数据。我们的目标是爬取stackoverflow.com的内容,同时使用爬虫代理来和多线程技术以提高爬取效率,并将数据存储到本地。