功能介绍数据处理详解|学习笔记

简介: 快速学习功能介绍数据处理详解

开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第一阶段功能介绍数据处理详解】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/669/detail/11585


功能介绍-数据处理详解

 

内容介绍

一.课题引入

二.案例演示

三.数据处理解析

四.结论

 

一.课题引入

先登入点击数据处理有查询预定的内容,查询里面有国际和国内,预定里也有国际国内

图片1.png

二.案例演示

(1)以去哪网为例,默认选择从北京到杭州,点击查询,它会跳转界面给一些选择,这个过程是最普通,简单的查询业务

查询以后有很多选择,随便选取一个最便宜的,点击,点击之后会有很多可以预定的,点击最便宜的,点击预定它会跳转另一个页面,另一个界面就是让填写一些乘客的信息。

 图片2.png

本质上到了预定的环节,刚刚这里有预定的界面然后现在已经跳转过

国际也是一样的,国际的从北京到巴黎,这是查询,在查寻一下,现在触发了一个查询的动作,简单的一个查询,在选中一个,到了这个界面来看,实际上,到了一个直接订票,这个查询的动作,再往后到预定界面预定的界面不管这个动作是国内的还是国际的,它都分为查询和预定两种业务场景,也就是查询是一个业务场景,预定也是一个独立的业务场景,而查询又分为国内的和国际的,预定也分为国内的和国际的,这是以去哪网为例。

图片3.png

(2)再以南方航空为例,这里面是一个机票单程的,然后从广州这里到北京,日期随便选一个,然后开始查询。

这是一个查询的动作,然后再随便选择一个价位,下面他会给我一个选择,立即预定,不登录,直接购票,然后它就让添加一些乘客信息,那这个就已经走到了预定的阶段,也就是说不管是南方航空,去哪儿网,还是其他的一些公司,那实际上这个订票环节都为查询。一个查询分为查询和预订这两种情况,查询又分为国内的和国际的,预定也分为国内和国际的,这是反爬虫项目数据处理的业务场景介绍,也就是这些公司,去哪儿,携程,还有各家航空公司,他们提供的这个订票和查票业务当中,实际上都分为查询和预订,查询又分国内查询和国际查询,预定又分为国内预定和国际预定,查询预定分为这四种情况,两两组合。

 

三.数据处理解析

(1)案例演示

实际上以国内查询为例,这里面有很多种数据类型可以选,可以选这类型。

国内查询配置的是一个 form 表单,国内查询分为 Url 是^.*/B2C40/query/jaxb/direct/query.ao*$, 有乘机人数,儿童人数,婴儿乘机人数,有出发地,目的地,起飞时间,请求方法,这是国内查询,国际查询也是乘机人数,成人乘机人数,婴儿乘机人数,出发地目的地,起飞时间和请求方法,实际上这里面要解析这个业务需求,这个数据处理里面,重点及关注的是出发地和目的地,以及起飞时间,以及乘机人数,国内查询业务场景等、出发地、目的地、起飞时间分别用 $depcity、 $arr city  和$flightdata  来表示,乘机人数,婴儿人数,儿童人数是按照 $adultnum, $childnum, $infantnum  来表示。

再看一下国际的,点击一下看国际查询,同样是查询,下面一个是国内一个是国际,来看一下国际的,国际的里面出发地用的是 dep, 目的地是 arr ,起飞时间是data, 乘机人数是 adt, 婴儿乘机人数是inf,这有一个变化,就是国际的查询和国内的查询,他们表达同一个出发地目的地,它们表示的规则是不一样的,国内这个叫 depcity 而国际查询就叫dep。国内查询里面,目的地叫 arrcity, 飞行时间叫flight date。 而国际里面叫 arr 和 data。

预定也是一样的,预定也是有区别的,始发地,目的地,起飞时间没有,但是乘机人数,乘机人姓名,是有联系人的,这里要说的就是不同的业务场景,国内查询和国际查询,它们解析同一个数据解析的规则,是不一样的。国际查询用 dep、arr,而国内查询我用的是 depcity arrcity。 最终目标是要解析数据是用 dep、arr 解析还是用 depcity、arrcity、 解析实际上程序是不知道的。

接下来看一下 dep,还以南方航空为例,点击重新做一个查询的动作,然后把监控打开,然后出发地叫广州,目的地叫北京,这个时候起飞,然后查询一下,给出结果,给出之后,实际上找这个网络。

还有很多请求,然后找到一个叫 query 这里面有个 query 查询,查询里面有请求头信息,请求信息里有 Referer, (请求来源),User-Agent  等等的信息,这里面还有一个 cookie,cookie 里还有好多数据,数据里还有一个参数,参数中有一个depcity、arrcity  还有一个 flightData 数据当中传递的参数当中包括出发地,目的地,起飞时间,还有一些乘机人数,就类似于这样的这些信息。

业务场景目标是为了解析它。那解析这个目标,但是数据的程序不知道怎么解析,因为不同的业务场景看国内的是用 depcity  来解析,而国际的是用 dep 来解析,那到底该用哪个解析呢?实际上,程序是不知道的,那一定要把它解析出来业务需求。

(2)数据解析过程

看一下数据采集阶段,第一步罗马脚本进行采集,第二步把它发送到Kafka,而采集的数据里面是没有这些信息的,有这些信息,但是不知道怎么解析,如果要把它解析出来,就得首先要知道是哪一个业务场景,是国内查询还是国际查询?是国内预定还是国际预定?要先知道是这些类型当中的哪一种,如果知道是国内查询,就用depcity, 如果是国际查询就用 dep 解析。

所以在这里面要想解析这个数据,首先要知道这个数据到底是哪个业务类型,但是这个数据我们在采集的过程当中,不知道这个数据类业务场景,不知道在数据的处理过程中,这个数据采集里面没有任何消息,告诉出这条数据,这些动作它到底是查询的还是预定的,本身我们的程序在采集过来,发送到 Kafka 以及三杠一到我们数据预处理程序当中,没有任何消息表示这个数据到底是查询还是预定,国内还是国际,既然没有任何表示,,所以这里面就用到了这个 url,Url  在数据采集阶段,用户访问了哪个 url, 是完全可以拿到的,url 通过采集写到 Kafka,三杠一已经在这里面也能把这个 url 拿到,就是你用户访问了这个页面,这个页面有一个 url,这个 url 是肯定能拿到的。

拿到这个 url 以后再去用 url 和这个解析 url 的正则表达式和^.*/B2C40/query/jaxb/diect/query.ao.*$ 正则表达式匹配,采集过来的数据里面的 url 能够和这个正则表达式匹配上,那么就表示这条数据是国内查询,知道了是国内查询以后,就知道该用 depcity,arrcity,fightdata 去解。

如果数据第一步采集数据,第二步发送过去,第三部夺过来,采集过来的数据里面的 url 是能够和

^.*http://b2c.csair.com/ita/int/app.*$ 正则表达式匹配上,那么就表示这条数据是国际查询。

知道了是国际查询就知道是用 dep 解析出发地arr 解析目的地 data 解析起飞时间,起飞时间,这个界面就是用于匹配的作用,预定也是一样的,国内的还是国际的都先要拿 url 和相应的正则匹配,如果匹配上了,知道是国际预定,然后再用这几个内容来解析数据。就是我们反爬虫项目当中用于数据处理的配置界面的这个功能。

 

四.结论

实际上我们的数据在采集的过程当中,我们会采集到这个参数里面有这个出发的时间,出发地,目的地,以及起飞的时间,但这个时间呢,不在程序当中是不能直接解析出来的,因为数据当中的这些规则太多,出发地和目的地,起飞时间有好几种情况,不知道该用哪一个,所以在查询采集数据的时候能拿到 url,用 url 去和这四种业务场景分别配置了一个 UI 的正则。

采集过来的数据和配置的这个正则表达式去匹配,这四个挨个匹配,匹配到哪个就知道这个数据是哪一个业务场景。知道是哪个业务场景就知道该用哪一个去匹配。所以先通过 url 与正则表达式去匹配,匹配完了以后,知道了业务场景。就知道该用哪一种规则去解析出发地、目的地和起飞时间。

所以这个配置的目的就是要告诉,最终的目的是解析这些内容,但是为了要实现解析这些内容需要先找的这个数据的业务场景,然后才能去解析,那怎么找到呢?就通过采集过的 url 和这里面的正则匹配,匹配到哪个它就是哪个。

图片4.png

这个界面已经明确告诉

^.*/B2C40/query/jaxb/diect/query.ao.*$ 正则表达式就是国内查询的。而这个^.*http://b2c.csair.com/ita/int/app.*$ 正则表达式就是国际查询。

而这个^.*getRuleFromSuccessPage.ao.*$ 正则表达式呢?就是国内预定的,国际预定的那就是这个^.*ita/rest/int/b/order.*$ 等式啊。所以这个数据预处理阶段要干的事情就是这样一个事情,目的是解析这些数据。

相关文章
|
C++ Windows
【Debug】VS EXE运行“应用程序无法正常启动(0xc000007b)”
今天在VS2013发布应用程序后,本地电脑可以正常打开exe,但放到其他电脑无法正常启动,打印“应用无法正常启动(0xc000007b)。请单击“确定”关闭应用程序”。
1567 0
【Debug】VS EXE运行“应用程序无法正常启动(0xc000007b)”
|
机器学习/深度学习 并行计算 编译器
了解NVIDAI显卡驱动(包括:CUDA、CUDA Driver、CUDA Toolkit、CUDNN、NCVV)
开发过程中需要用到GPU时,通常在安装配置GPU的环境过程中遇到问题;CUDA Toolkit和CUDNN版本的对应关系;CUDA和电脑显卡驱动的版本的对应关系;CUDA Toolkit、CUDNN、NCVV是什么呢?
16970 1
了解NVIDAI显卡驱动(包括:CUDA、CUDA Driver、CUDA Toolkit、CUDNN、NCVV)
|
8月前
|
人工智能 云计算
阿里云产品手册2025版发布
阿里云产品手册2025版发布,涵盖阿里云产品大图、面向 AI 的全栈云计算产品体系等最新内容,囊括了阿里云产品介绍、优势、功能、应用场景和发展历程的介绍。
1052 12
|
7月前
|
人工智能 安全 程序员
用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!
用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!
C#WPF 图片在显示时没有问题,但在运行时图片显示不出来的解决
选中项目,点击右上角的显示全部文件按钮,会将默认隐藏的文件显示出来,选中所需图片,右键,添加到项目,然后选择图片查看属性,生成操作选择resource。完毕。本人目前的解决方案。
995 41
C#WPF 图片在显示时没有问题,但在运行时图片显示不出来的解决
|
前端开发 Java 关系型数据库
基于Springboot+Vue实现校园招聘系统
基于Springboot+Vue实现校园招聘系统
238 2
|
机器学习/深度学习 语音技术
语音情感基座模型emotion2vec 问题之emotion2vec模型进行预训练,如何操作
语音情感基座模型emotion2vec 问题之emotion2vec模型进行预训练,如何操作
603 1
|
存储 缓存 NoSQL
案例01-修改数据redis没有同步更新
修改数据redis没有同步更新
292 0
|
Java 调度 开发者
揭秘Java并发包(JUC)的基石:AQS原理和应用
揭秘Java并发包(JUC)的基石:AQS原理和应用
|
存储 并行计算 算法
大模型量化技术解析和应用
眼看人工智能含智能量越来越高含人量越来越低,是否开始担心自己要跟不上这趟高速列车了?内心是否也充满好奇:大模型背后的奥秘是什么?为何如此强大?它能为我所用吗?哪种技术最适合我的需求?