在爬虫爬取数据的之前,必须先系统的了解一下我们待爬取的数据有哪些格式,这样做的好处在与能针对不同的数据类型采取不同分方法手段。
一、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是一种针对流媒体传输而设计的文件容器格式,支持把不同的数据流封装和同步传输,在数字媒体领域用途广泛。