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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 快速学习功能介绍数据处理详解

开发者学堂课程【大数据实战项目:反爬虫系统(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.*$ 等式啊。所以这个数据预处理阶段要干的事情就是这样一个事情,目的是解析这些数据。

相关文章
|
6月前
|
数据采集 自然语言处理 监控
|
数据处理
航测数据处理教程(超详细)
航测数据处理教程(超详细)
164 1
|
4月前
|
中间件 数据处理 Apache
|
8天前
|
消息中间件 存储 SQL
ClickHouse实时数据处理实战:构建流式分析应用
【10月更文挑战第27天】在数字化转型的大潮中,企业对数据的实时处理需求日益增长。作为一款高性能的列式数据库系统,ClickHouse 在处理大规模数据集方面表现出色,尤其擅长于实时分析。本文将从我个人的角度出发,分享如何利用 ClickHouse 结合 Kafka 消息队列技术,构建一个高效的实时数据处理和分析应用,涵盖数据摄入、实时查询以及告警触发等多个功能点。
20 0
|
1月前
|
消息中间件 监控 Kafka
构建高效的数据流处理系统
【9月更文挑战第32天】本文将带你进入数据流处理的奇妙世界,探讨如何构建一个既高效又可靠的数据处理系统。我们将通过一个简单的例子来演示如何从概念到实现,一步步打造你的数据流处理系统。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。
41 2
|
22天前
|
前端开发 JavaScript API
Gulp:高效构建流程中的流式处理利器
【10月更文挑战第13天】Gulp:高效构建流程中的流式处理利器
31 0
|
3月前
|
存储 数据处理 API
数据处理
【8月更文挑战第21天】
37 1
|
4月前
|
弹性计算 负载均衡 中间件
|
6月前
|
存储 数据挖掘 物联网
Python中的实时数据分析:构建流处理应用程序
【4月更文挑战第12天】本文介绍了Python在实时数据分析中的应用,包括实时数据分析的基本概念、Python的优势及基本流程。Python凭借丰富的库(如Pandas、NumPy)、强大的数据处理工具(如PySpark、Apache Kafka)和活跃的生态系统,成为实时数据分析的理想选择。文中通过社交媒体和物联网的数据分析案例展示了Python如何从数据获取、预处理、处理、存储到结果展示的全过程。通过学习和实践,读者可以掌握使用Python进行实时数据分析的技能。
129 3
|
6月前
|
并行计算 数据挖掘 数据处理
Pandas性能优化与高级功能:让数据处理更高效
【4月更文挑战第16天】本文探讨了如何优化Pandas的性能和利用其高级功能。关键的性能优化方法包括选择合适的数据类型、避免数据复制、使用向量化操作、优化查询和索引,以及探索并行计算。高级功能涉及分组聚合、窗口函数、数据透视表、缺失值处理和分类数据编码。通过这些技巧,可以更高效地处理大规模数据集。