【学习心得】网络中常见数据格式(爬虫入门知识)

在爬虫爬取数据的之前,必须先系统的了解一下我们待爬取的数据有哪些格式,这样做的好处在与能针对不同的数据类型采取不同分方法手段。

一、XML

XML(Extensible Markup Language)是一种可扩展的标记语言,它定义了一套标记,用于组织和传输信息,比如文本、图像、数据、音频和视频等。与HTML不同,XML并不是用于显示信息的,而是用于存储和传输信息的。XML标记没有预定义的含义,必须由用户自定义。XML标记可以用于组织和传输各种类型的数据,例如文本、图像、数据、音频和视频等。XML还支持自定义标记,这些标记可以用于描述特定类型的数据。许多应用程序和系统都使用XML作为数据存储和传输的标准格式,因为它具有灵活性和可扩展性。

二、JSON

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它比XML更小、更快,而且更容易被人阅读。JSON格式定义了一种可以在Web浏览器和服务器之间传输数据的简单方法。它由两个主要部分组成:键值对和数组。键值对是一对括号内的键和值,其中键通常是字符串,值可以是字符串、数字、布尔值、数组或另一个键值对。数组是一组值的集合,它们以逗号分隔,每个值都有一个唯一的键。JSON数据可以用于在Web应用程序和服务器之间传输数据,也可以用于在客户端和服务器之间传输数据。许多Web框架都支持JSON数据格式,因此它已经成为了一种流行的数据交换格式。

具有以下几个关键特点:

  • JSON 是轻量级的文本数据交换格式。相比XML,JSON 的体积更小、更快速,这使得 JSON 非常适合在网络上快速传递数据。
  • JSON 独立于语言和平台。JSON 使用 Javascript语法来描述数据对象,但 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。
  • JSON 易于人阅读和编写。相比XML,JSON 的语法更加简洁,阅读和编写都更容易。
  • JSON 同时被人和机器都能理解。JSON 具有自我描述性,同时也具备层级关系,使其成为理想的数据交换语言。
  • JSON 使用名称/值对来描述数据。一个 JSON 对象就是一个键值对的集合,它使用 { } 括起来。每个名称后面都有一个 :,名称和值之间使用 : 分隔。
  • JSON 值可以是:数字(整数或浮点数)、字符串(在双引号中)、逻辑值(true 或 false)、数组(在方括号中)、对象(在花括号中)、null。

三、Protobuf

Protobuf (Protocol Buffers)是一种轻量级、高效、可扩展的数据序列化格式 ,由谷歌开发并开源。它可以在不同的平台、语言之间传递和解析数据,支持类型定义和版本控制,具有数据压缩和序列化速度快的优点。Protobuf 可以用于数据存储、通信协议、数据共享等场景,广泛应用于谷歌、微软、阿里巴巴等公司的产品中。

它的主要特点包括:

  • 轻便高效 : 相比 XML 和 JSON,Protobuf 的编码体积更小,序列化/反序列化速度更快。
  • 语言中立 : Protobuf 的数据描述语言可以在不同的编程语言中使用,生成对应的代码,支持多语言的交互。
  • 可扩展 : 支持可选和必选字段,可以轻松做版本兼容。
  • 代码生成 : 根据 .proto 文件可以自动生成序列化、反序列化代码,使用简单。
  • 类型安全 : Protobuf 中的数据类型更严格,可以进行类型检查。
  • 支持数据认证 : 可以设置数据范围,要求等,对数据进行验证。
  • 平台中立 : 支持各种平台,从移动端到服务器端都可以使用。

Protobuf 的数据首先需要使用 .proto 文件进行描述,然后通过 protoc 工具生成对应语言的代码,然后在程序中使用这些代码对数据进行序列化和反序列化,从而实现数据的存储和交换。

四、Transport Stream

(1)HLS

HLS(HTTP Live Streaming)是一种流媒体协议 ,用于在互联网上提供视频和音频内容的实时传输 。它是由苹果公司在2009年推出的,用于替代之前的MPEG:DASH协议。

HLS协议使用M3U8格式的文件来指定媒体文件的列表,并通过HTTP协议将这些文件分块传输给用户。M3U8文件包含了一个或多个媒体文件的路径,以及这些文件的分块大小和顺序。

当用户请求一个HLS流时,服务器会返回一个M3U8文件,该文件指定了所有媒体文件的路径和分块大小。然后,服务器会根据用户的请求动态地发送这些分块,直到用户完成播放。

HLS协议的优点在于它可以适应不同带宽的网络,并且可以在不同的设备上流畅地播放视频。它也比较容易实现,并且不需要额外的插件或软件即可在浏览器中播放。

(2)M3U8

m3u8是一种播放列表文件格式 ,用于指定HTTP Live Streaming(HLS)流媒体的媒体文件列表和元数据。m3u8的全称是MPEG-2 Transport Stream UTF-8 Encoding Format Playlist。它使用UTF-8编码,文件扩展名为.m3u8。m3u8文件包含了一系列抓取和播放流媒体文件的指令,每一行指向一个流媒体文件片段。通过把这些文件片段按照m3u8列表中的顺序拼接起来,可以还原整个流媒体文件。

m3u8主要有以下特征:

  • 存储流媒体索引和元数据,指导如何抓取和播放流媒体片段
  • 使用UTF-8编码,跨平台兼容
  • 文件片段通常是ts格式的视频流和aac格式的音频流
  • 支持AES-128加密,保证内容安全
  • 支持多码率级别,可以自动切换以适应不同网络

M3U8格式文件可以使用文本编辑器进行创建和编辑,并且可以通过HTTP协议直接传输给用户。

(3)ts

TS即传输流(Transport Stream)格式 是一种广泛使用的数字视频和音频流格式。

ts文件主要有以下几个特征:

  • 是一种二进制格式,用于传输视频、音频、数据等数字媒体流。
  • 通常用来封装MPEG-2编码的视频流和AAC/MP3编码的音频流。
  • 支持将视频、音频和数据打包传输。每个流分别包装,互不影响。
  • 在传输时可对媒体流进行加密。
  • 可以携带额外的元数据信息。
  • 应用场景主要是数字电视播放、IPTV、流媒体传输等。
  • HLS流媒体通常会将流切割为ts格式的文件片段。

ts是一种针对流媒体传输而设计的文件容器格式,支持把不同的数据流封装和同步传输,在数字媒体领域用途广泛。

相关推荐
suifen_1 分钟前
RK3229_Android9.0_Box 4G模块EC200A调试
网络
铁松溜达py7 分钟前
编译器/工具链环境:GCC vs LLVM/Clang,MSVCRT vs UCRT
开发语言·网络
m0_741768852 小时前
使用docker的小例子
运维·docker·容器
学习3人组2 小时前
CentOS 中配置 OpenJDK以及多版本管理
linux·运维·centos
厨 神2 小时前
vmware中的ubuntu系统扩容分区
linux·运维·ubuntu
Karoku0663 小时前
【网站架构部署与优化】web服务与http协议
linux·运维·服务器·数据库·http·架构
geek_Chen013 小时前
虚拟机共享文件夹开启后mnt/hgfs/下无sharefiles? --已解决
linux·运维·服务器
(⊙o⊙)~哦3 小时前
linux 解压缩
linux·运维·服务器
最新小梦4 小时前
Docker日志管理
运维·docker·容器