数据预处理-数据解析-需求与思路|学习笔记

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

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

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


数据预处理-数据解析-需求与思路


内容介绍:

一、数据解析的需求

二、解析规则与思路


一、数据解析的需求

已经打完了单程还是往返的标签同时也看到了效果。接下来看下面的宏观流程,接下来要实现的目标叫做数据解析。

image.png

数据解析分为两种情况:查询类的数据解析,预定类的数据解析。在数据当中,企业的业务场景当中,数据会分为两种业务场景,一个是查询类的,一个是预定类的。

那么要做的第一件事情就是查询类的数据解析。

查询类的数据解析到底要做什么事?

解析查询类的数据的目标是来实现解析出数据当中出现的出发地、目的地、起飞时间,以及其他的信息,也就说最主要的目的就是为了解析这些数据,把它们解析出来。

这部分稍微有些复杂,因为采集的数据当中是没有出发地、目的地、起飞时间的,或者说有但是不能够通过原始数据一步解析出来。

需求:

截止到目前为止,已经对每一条数据进行了分类,计算出了它的标签,这些标签里面包括国内查询、国际查询、国内预定、国际预定,还有单程跟往返,这些已经计算好了,在解析数据里面我们会用到它们。

每一个不同的分类,也就是说国内查询、国际查询、国内预定和国际预定。

这是四种情况,那么不同的分类,它的请求参数的格式是不一样的。也就说解析这四种情况的出发地和目的地,它的解析参数是不一样的。那么同样,四种不听的业务场景解析数据的参数也是不一样的。

那么这些参数放在哪儿?

它们放在数据库中,四种情况分别有一个解析规则来一一去对应。

参数的配置放到了外部项目当中。

image.png

看上图所示页面,数据管理里有一个数据处理的页面,上面有国际国内查询,国际和国内的预定。

然后在这里面要解析出发地和目的地。

以南方航空为例,现在默认是广州到成都。8月15出发,9月15返回,这两个是日期。

image.png

日期选好以后来监控一下它的参数,点击查询,看下图,在网络流量当中,查询 Query,然后看到里面的参数有一个 depcity, 一个 arrcity 还有一个 flightdate 。

image.png

depcity 的就是出发地,arrcity 就是目的地,flightDate 是起飞日期,这就是要监控的数据,这些数据都在参数里面也就是 Body 里面。请求头里面是没有这些数据的。

要把它解析出来就要知道数据的 body 信息。那么数据的 body 有哪些?要去哪里又该怎么去解析?

image.png

看上图页面,业务场景分为查询类和预定类。而查询又分为国内查询和国际查询。预定又分为国内预定和国际预定。

image.png

目的是为了解析说出发地、目的地、起飞时间。也就是图中显示的 depCity、arrCity、flightDate,但是不能直接解析出来。

因为国内查询用的是 depCity、arrCity、flightDate 来标记出发地,目的地和起飞时间。

image.png

但是在国际查询,出发地是 dep ,目的地是 arr。起飞时间是 date  ,这和国内查询完全不一样。同样国内和国际预定里面的出发地,目的地和起飞时间也是完全不一样的,也就是数据采集完之后可以拿到数据当中的 body 信息。但是拿到信息以后该怎么解析?

所以这个界面存在的意义就是明确的告诉我们,如果数据是国内查询的业务场景,那么针对每一条数据它会把你的飞行类型和操作类型打出来了。就是上面的四种情况,要知道具体的业务场景,然后再去找这个业务场景对应的解析规则。

解析出发地目的地起飞时间以及乘机人数是最终的目的,但不能一步到位,所以需要先找到业务场景。

image.png

再去确定该用哪一个解析规则。如果数据直接传过来,它可能有很多种解析方法,那么在多种的情况下就不能够解析出来。所以必须确定是哪一种情况。

先确定业务场景,再根据 url 的表达式以及其他的一些参数确定该用哪个来解析,这个就是需求,也是数据解析的最终目的。


二、解析规则与思路

需要从数据库当中读取出解析规则,根据数据打上的标签,就是国内查询、国际查询、国内预定跟国际预定,根据前面的标签,找到规则,再去解析里面的数据。这就是这个界面存在的意义。这里面是一个配置,它落到数据库里面,打开 analyzerule 这个表:image.png

这个表里有很多字段,它们就是这个界面所存出来的结果,其中 BehaviorType 用来区分查询跟预定。

package com.air.antispider.stream.dataprocess.constants

//操作标记类别0-查询,1-预定,-1-其他

object BehaviorTypeEnum extends Enumeration{

type BehaviorTypeEnum = Value

val Query = Value(0,"Query")

val Book = value(1,"Book")

val Other = value(-1, "Other")}

这个数据表,从后往前会发现有很多的 Query ,这些都是查询的指标数据。

image.png

再往前看,直到看到预定的字段 book 。

image.png

上面的这些就是查询的相关指标的参数和预定的相关指标的参数。那么,查询跟预定前面的这些比如 flight_type,behavior_type 等是干什么的?

image.png

先看查询,先在查询类的业务场景当中,找到 query,这里有很多种情况。第三行是国内查询,第二行是国际查询,还有第四行的 c1,c2,d1。

image.png

也就是如果传过了一条数据,它是查询性的业务场景,那么要查询出发地和目的地,起飞时间这三个参数,以这三个为例,那么应该以那个为准。上图的表格能看到出发地和目的地,起飞时间都有三种选择,那么到底以哪个为准?按谁去解析?这时候就用到了前面的 flight_type,behavior_type,requestMatchExperssion 这些指标。

通过多个属性联合到一起确定出到底该用哪一个数据进行解析。

比如这里面的飞行类型 Flight_type,在 Flight_type 里,0代表国内,1代表国际。Behavior_type 的0代表查询,1代表预定。所以上表中第二三四行他们三个之间,如果进行国内查询,那么就从三种选择变成了两种选择。所以后面这几个属性的目的,都是为了确定,当有多个选择的情况确定出到底该用哪一个。这些前面的属性就是为了要确定这件事情。这件事情就是在数据库当中,数据管理界面当中的这些属性都存储在数据库中,也就是这张表。

下面在book解析的时候,他也有 book_idType,book_idCard 两种选择

image.png

那这两种选择该用哪一个?这也要用前面的这些属性来确定,如果是预定的业务场景,比如下图中的这个例子:

image.png

在预定的场景中,第一个跟第五个该用哪一个?就是通过前面这些属性来进行确定。

image.png

上面的就是解析数据的规则以及思路。

相关文章
|
15天前
数据解析之xpath 太6了
数据解析之xpath 太6了
|
18天前
|
存储 弹性计算 缓存
阿里云服务器ECS通用型实例规格族特点、适用场景、指标数据解析
阿里云服务器ECS提供了多种通用型实例规格族,每种规格族都针对不同的计算需求、存储性能、网络吞吐量和安全特性进行了优化。以下是对存储增强通用型实例规格族g8ise、通用型实例规格族g8a、通用型实例规格族g8y、存储增强通用型实例规格族g7se、通用型实例规格族g7等所有通用型实例规格族的详细解析,包括它们的核心特点、适用场景、实例规格及具体指标数据,以供参考。
阿里云服务器ECS通用型实例规格族特点、适用场景、指标数据解析
|
10天前
|
消息中间件 canal 关系型数据库
Maxwell:binlog 解析器,轻松同步 MySQL 数据
Maxwell:binlog 解析器,轻松同步 MySQL 数据
82 11
|
2天前
|
前端开发 Python
解析数据的Beautiful Soup 模块(二)
解析数据的Beautiful Soup 模块(二)
10 1
|
16天前
|
数据采集 存储 JavaScript
构建您的第一个Python网络爬虫:抓取、解析与存储数据
【9月更文挑战第24天】在数字时代,数据是新的金矿。本文将引导您使用Python编写一个简单的网络爬虫,从互联网上自动抓取信息。我们将介绍如何使用requests库获取网页内容,BeautifulSoup进行HTML解析,以及如何将数据存储到文件或数据库中。无论您是数据分析师、研究人员还是对编程感兴趣的新手,这篇文章都将为您提供一个实用的入门指南。拿起键盘,让我们开始挖掘互联网的宝藏吧!
|
1月前
|
数据采集 存储 JavaScript
如何使用Cheerio与jsdom解析复杂的HTML结构进行数据提取
在现代网页开发中,复杂的HTML结构给爬虫技术带来挑战。传统的解析库难以应对,而Cheerio和jsdom在Node.js环境下提供了强大工具。本文探讨如何在复杂HTML结构中精确提取数据,结合代理IP、cookie、user-agent设置及多线程技术,提升数据采集的效率和准确性。通过具体示例代码,展示如何使用Cheerio和jsdom解析HTML,并进行数据归类和统计。这种方法适用于处理大量分类数据的爬虫任务,帮助开发者轻松实现高效的数据提取。
如何使用Cheerio与jsdom解析复杂的HTML结构进行数据提取
|
24天前
|
存储 关系型数据库 MySQL
技术解析:MySQL中取最新一条重复数据的方法
以上提供的两种方法都可以有效地从MySQL数据库中提取每个类别最新的重复数据。选择哪种方法取决于具体的使用场景和MySQL版本。子查询加分组的方法兼容性更好,适用于所有版本的MySQL;而窗口函数方法代码更简洁,执行效率可能更高,但需要MySQL 8.0及以上版本。在实际应用中,应根据数据量大小、查询性能需求以及MySQL版本等因素综合考虑,选择最合适的实现方案。
125 6
|
2天前
|
消息中间件 监控 关系型数据库
MySQL数据实时同步到Elasticsearch:技术深度解析与实践分享
在当今的数据驱动时代,实时数据同步成为许多应用系统的核心需求之一。MySQL作为关系型数据库的代表,以其强大的事务处理能力和数据完整性保障,广泛应用于各种业务场景中。然而,随着数据量的增长和查询复杂度的提升,单一依赖MySQL进行高效的数据检索和分析变得日益困难。这时,Elasticsearch(简称ES)以其卓越的搜索性能、灵活的数据模式以及强大的可扩展性,成为处理复杂查询需求的理想选择。本文将深入探讨MySQL数据实时同步到Elasticsearch的技术实现与最佳实践。
17 0
|
2天前
|
XML 数据格式 开发者
解析数据的Beautiful Soup 模块(一)
解析数据的Beautiful Soup 模块(一)
16 0
|
1月前
|
XML JSON API
淘宝京东商品详情数据解析,API接口系列
淘宝商品详情数据包括多个方面,如商品标题、价格、图片、描述、属性、SKU(库存量单位)库存、视频等。这些数据对于买家了解商品详情以及卖家管理商品都至关重要。

热门文章

最新文章

推荐镜像

更多