数据预处理-单程往返-需求与思路|学习笔记

简介: 快速学习数据预处理-单程往返-需求与思路

开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第三阶段数据预处理-单程往返-需求与思路】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/671/detail/11658


数据预处理-单程往返-需求与思路


内容介绍:

一,单程往返的概念及目标

二,代码实现


一,单程往返的概念及目标

数据分类有一个分类叫数据是单程的还是往返的。那么什么是单程什是往返?

模块的目的就是根据数据当中 httpReferrer 里面日期格式数据出现的次数。这个数据包含日期格式,比如年月日。根据这个数据出现的次数判断它是单程还是往返还是其他。如果有一个日期类型格式就是单程,两个就是往返,没有就是其他。

以南方航空为例,当前默认的,是从广州到北京。

image.png

现在默认的是往返,下面点击单程。

image.png

当点击单程的时候,发现返回日期没有了,重新点击往返就会再次显示。所以点击单程只有一个日期,往返就有两个日期。那也就说往返的业务场景有两个日期格式的数据,单程的有一个。

下面来监控。打开监控会显示下面的页面:

image.png

然后以从广州到北京为例,现在是往返类型有两个日期。

然后跟踪一下实际效果,点击网络。

image.png

在过滤 URL 里查询 query。

image.png

然后在里面找到并点击往返(Referer),会显示:

https://b2c.csair.com/B240/newTrips/static/main/page/booking

/index.html?

t=R&c1=CAN&c2=PEK&d1=2019-05-16&d2=2019-05-16&at=1

&ct=0&it=0

从中可以看到两个日期格式,把它打开并直接粘到程序里,这个就是 httpReferrer 。

里面的日期格式有两个,所以它是往返类型,就根据这个来进行计算。


二,代码实现

目标明确了,但是要怎么做?

先来创建一下实例来判断是单程还是往返

打这个标签的一个方法,就是下面这个方法:

TravelTypeClassifier.classifyByRefererAndRequestBody

把它粘贴过来,

把后面的括号补全。会发现现在它是红的,红的说明当前并没有名为 TravelTypeClassifier的 object 。 按下图步骤创建 object 。创建名为TraveITypeClassifier,

image.png

这个方法主要就是用于实现单程-往返的标签。

package

com.air.antispider.stream.dataprocess.businessprocess

//用于实现返程-往返标签

object TravelTypeclassifier {

}

主要在上面这个地方来实现这个工作。创建完之后这里就不报错了。

但是后面这个 classifyByRefererAndRequestBody 这个方法还没有,所以接下来要实现这个方法。在这个方法当中,我们根据 httpReferrer 去判断单程往返。所以需要找到这个数据,这个数据在哪?

//数据拆分功能

val(requestUr1,requestMethod,contentType,requestBody,

httpReferrer,remoteAddr,httpUserAgent,timeIso8601,

serverAddr,cookiesStr,cookieValue_JSESSIONID,

cookieValue_USERID)=DataSplit.dataSplit(encryptedId)

上面是对数据进行了拆分,里面有 httpRreferrer 这个数据。所以将其粘贴进来以后,这个方法就创建完了。

TravelTypeClassifier.classifyByRefererAndRequestBody(httpRreferrer)

这样参数就准备好了并且放到了这个方法里边,但是这个方法还没有,所以如下图所示创建方法:image.png

在这里加上注释:表明这个方法用于实现打单程往返标签

package

com.air.antispider.stream.dataprocess.businessprocess

//用于交现返程-往返标签

object TravelTypeclassifier {

//实现打单程往返标签

def classifyByRefererAndRequestBody( httpReferrer:

string : Unit = {

}}

这样这个方法就创建完毕。

接下来就这个方法来实现打标签的过程。先把数据加过来,数据的代码如下:

https://b2c.csair.com/B2C40/newTrips/static/main/page/booking

/index.html?

t=R&c1=CAN&c2=PEK&d1=2019-05-16&d2=2019-05-16

&at=1&ct=0&it=0

整体的代码就是:

package

com.air.antispider.stream.dataprocess.businessprocess

//用于交现返程-往返标签

object TravelTypeclassifier {

//实现打单程往返标签

def classifyByRefererAndRequestBody( httpReferrer:

string : Unit = {

https://b2c.csair.com/B2C40/newTrips/static/main/page/booking

/index.html?

t=R&c1=CAN&c2=PEK&d1=2019-05-16&d2=2019-05-16

&at=1&ct=0&it=0

}}

这就是数据,那这个数据按照什么顺序来进行处理的。先看一下这个数据有什么特点。这个数据要怎么判断日期类型出现的数量?

使用一种最朴实的方法判断,看一下这个数据,前面是 url访问的路径,后面是一些参数。他们之间用问好分割。所以先用问号做一次拆分,拆分完以后再仔细观察后面的数据。

https://b2c.csair.com/B2C40/newTrips/static/main/

page/booking/index.html?

//

t=R&c1=CAN&c2=PEK&d1=2019-05-16&d2=2019-05-16

&at=1&ct=0&it=0

切分完以后的第二个数据再与字符(&)进行拆分。拆分的结果:

//https://b2c.csair.com/B2c40/newTrips/static/main/

page/booking/index.html ?l

//t=R&

//c1=CAN&

// c2=PEK&

//d1=2019-05-16&

//d2=2019-05-16&

//at=1&

//ct=0&

/ /it=0

拆完以后的每个参数里面都有等号。然后再用等号拆,拆分完以后的第二个值是就是我的数据,可能是也可能不不是日期。

所以就按照这个思路来,先用问号拆再用与字符拆然后再用等号儿拆。拆分完以后出来的第二个数据就是我们想要的数据。然后用日期这个格式的一个正则表达式去判断,拿这个数据去匹配正则表达式,如果匹配上就等于找到了。找到以后就做一个日期类型的计数器来统计数量。匹配上一次计数器加一,最后算一下计数器的数量就可以了。再根据数量来进行判断是单程还是往返。

总结一下这个思路:

第一步,先用问号对数据进行切分。

第二版,在第一步的基础上用语字符去进行拆分。

第三步,再用等号把第二部的数据进行切割,获取第二个数据。

第四步:等号拆分完以后,要在这里面用一个日期格式的正则表达式跟切分完以后的第二个数据去匹配。

第五步,用技数器记录匹配上的次数。

第六步,通过计数器的值判断是单程还是往返还是其他。

以上就是本节课的内容。

相关文章
|
8月前
如何用公式化思维?几个经典公式收集
如何用公式化思维?几个经典公式收集
|
机器学习/深度学习 人工智能 算法
机器学习笔试面试之图像数据不足时的处理方法、检验方法、不均衡样本集的重采样
机器学习笔试面试之图像数据不足时的处理方法、检验方法、不均衡样本集的重采样
184 0
|
3月前
|
机器学习/深度学习 数据采集 数据挖掘
11种经典时间序列预测方法:理论、Python实现与应用
本文将总结11种经典的时间序列预测方法,并提供它们在Python中的实现示例。
194 2
11种经典时间序列预测方法:理论、Python实现与应用
|
3月前
|
机器学习/深度学习 算法 数据处理
模型预测笔记(二):结合SMOTE来进行数据不均衡处理实操
这篇文章介绍了SMOTE算法,这是一种通过合成新样本来处理数据不均衡问题的技术,旨在提高模型对少数类别的识别能力。
132 1
|
4月前
|
机器学习/深度学习 数据采集 存储
一文读懂蒙特卡洛算法:从概率模拟到机器学习模型优化的全方位解析
蒙特卡洛方法起源于1945年科学家斯坦尼斯劳·乌拉姆对纸牌游戏中概率问题的思考,与约翰·冯·诺依曼共同奠定了该方法的理论基础。该方法通过模拟大量随机场景来近似复杂问题的解,因命名灵感源自蒙特卡洛赌场。如今,蒙特卡洛方法广泛应用于机器学习领域,尤其在超参数调优、贝叶斯滤波等方面表现出色。通过随机采样超参数空间,蒙特卡洛方法能够高效地找到优质组合,适用于处理高维度、非线性问题。本文通过实例展示了蒙特卡洛方法在估算圆周率π和优化机器学习模型中的应用,并对比了其与网格搜索方法的性能。
415 1
|
6月前
|
算法 C语言 C++
刷题训练之模拟
刷题训练之模拟
32 0
|
8月前
|
数据可视化 vr&ar
R语言统计学DOE实验设计:用平衡不完全区组设计(BIBD)分析纸飞机飞行时间实验数据
R语言统计学DOE实验设计:用平衡不完全区组设计(BIBD)分析纸飞机飞行时间实验数据
|
8月前
|
数据可视化 算法 区块链
R语言泊松过程及在随机模拟应用可视化
R语言泊松过程及在随机模拟应用可视化
|
8月前
|
数据可视化 数据挖掘
R语言分段回归数据数据分析案例报告
R语言分段回归数据数据分析案例报告
|
8月前
|
C++
【SPSS】两配对样本T检验分析详细操作教程(附案例实战)
【SPSS】两配对样本T检验分析详细操作教程(附案例实战)
840 0
【SPSS】两配对样本T检验分析详细操作教程(附案例实战)