开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop框架搭建):预处理及识别代码架构介绍】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/670/detail/11625
预处理及识别代码架构介绍
内容介绍:
一、Constants 下的三个枚举
二、反爬虫计算结果封装类
一、constants 下的三个枚举
分别来看 dataprocess 和 rulecompute 里的内容。数据预处理的都在 dataprocess里,而 businessprocess 是用来实现数据预处理业务的。
Constants下有三个枚举:
第一个是behaviortypeenum,它标记的是业务场景
package com.air.antispider.stream.dataprocess.constants
/**
*操作类别0-查询,1-预定,-1-其他
*/
object BehaviorTypeEnum extends Enumeration{
type BehaviorTypeEnum-Value
val Query =Value(e,"query")
val Book =Value(1,’‘Book’‘)
val other = Value(-1,"other")
}
第二个叫做 flighttypeenum,它标记的是航线的类别,分为国内和国际
package com.air.antispider.stream.dataprocess.constants
/**
*标记前线类别0-国内,1-国际,-1-其他
*/
object FlightTypeEnum extends Enumeration{
type FlightTypeEnum'= Value
val National =Value(0)
val International = Value(1)
val other=Value(-1)
}
第三个叫做 traveltypeenum,标记的是单程还是往返,
package com.air.antispider.stream.dataprocess.constants
/**
*标记往返类别0-单程,1-往返,-1-其他
*/
object TravelTypeEnum extends Enumeration{
type TravelTypeEnum = Value//这里仅仅是为了将 Enumration.Value 的类型暴露出来给外界使用而已
val Onekay-Value(0)
gval RoundTrip=Value(1)
val =Value(-1)
}
以后在业务处理中会经常使用这三个枚举。
二、反爬虫计算结果封装类
Launch是爬虫预处理的所有代码的主程序入口。
爬虫识别都需要在rulecompute中操作。
同时也提供了一个反爬虫计算结果封装类:
*反爬计算结果封装类
*
*@param ip CIP
@param ipBlockCounts,单全时间内IP段访问量
@param ipAccessCounts 单位时间内某个IP访问层量
@param criticalPageAccessCounts单位时间内的关键页面访问总量
@param userAgentCounts单位时间内的UA种类数统计
@param critivalPageminInterval单位时间内关键页面最短访问间隔
@param accessPageIntervalLessThanDefault单位时间内小于最短访问间隔的关键页面查询
@param differentTripQuerysCounts 单位时间内查询不同行程的次数
@param criticalCookies单位时间内关键页面的 Cookie 数
@param flowsScore流程计算结束
*/
:ase class AnticalculateResult(processedData: ProcessedData,
ip: string,
ipBlockCounts: Int, ipaccesscounts: Int,
criticalPageAccessCounts: Int, userAgentcounts:Int,
critivalPageMinInterval:Int,
accessPageIntervallessThanDefault:Int, differentTripQuerysCounts:Int, criticalcookies:Int,
它最终只要实现 case class anticalculatereresult 就做完了,也就是反爬虫项目的最终目标。