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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/713356.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何解决幻兽帕鲁/Palworld服务器联机游戏时的丢包问题?

如何解决幻兽帕鲁/Palworld服务器联机游戏时的丢包问题? 等待服务器维护:首先,确保网络连接稳定,然后查看游戏官方或社区论坛,了解是否有服务器维护的消息。这是解决丢包问题的一种直接且有效的方法。 更新显卡驱动&a…

Siemens-NXUG二次开发-获取prt中体与类型、实体面与类型、实体边与类型、边上点的Tag标识[Python UF][20240302]

Siemens-NXUG二次开发-获取prt中体与类型、实体面与类型、实体边与类型、边上点的Tag标识[Python UF][20240302] 1.python uf函数1.1 NXOpen.UF.Obj.CycleObjsInPart1.2 NXOpen.UF.Obj.AskTypeAndSubtype1.3 NXOpen.UF.Modeling.AskBodyFaces1.4 NXOpen.UF.Modeling.AskFaceEdg…

RISC-V特权架构 - 机器模式下的异常处理

RISC-V特权架构 - 机器模式下的异常处理 1 进入异常1.1 从mtvec 定义的PC 地址开始执行1.2 更新CSR 寄存器mcause1.3 更新CSR 寄存器mepc1.4 更新CSR 寄存器mtval1.5 更新CSR 寄存器mstatus 2 退出异常2.1 从mepc 定义的PC 地址开始执行2.2 更新CSR 寄存器mstatus 3 异常服务程…

Android Tombstone 分析

1.什么是tombstone Tombstone是指在分布式系统中用于标记数据已被删除的记录,通常包含删除操作的时间戳和相关信息。 当一个动态库(native程序)开始执行时,系统会注册一些连接到 debuggerd 的signal handlers。当系统发生崩溃时…

wpa_supplicant与用户态程序的交互分析

1 wpa_supplicant与用户态程序wpa_cli的交互过程 1.1 交互接口类型 wpa_supplicant与用户态程序交互的主要接口包括以下几种: 1)命令行界面:通过命令行工具 wpa_cli 可以与 wpa_supplicant 进行交互。wpa_cli 允许用户执行各种 wpa_suppli…

Spark Shuffle Tracking 原理分析

Shuffle Tracking Shuffle Tracking 是 Spark 在没有 ESS(External Shuffle Service)情况,并且开启 Dynamic Allocation 的重要功能。如在 K8S 上运行 spark 没有 ESS。本文档所有的前提都是基于以上条件的。 如果开启了 ESS,那么 Executor 计算完后&a…

MySQL 表的基本操作,结合项目的表自动初始化来讲

有了数据库以后,我们就可以在数据库中对表进行增删改查了,这也就意味着,一名真正的 CRUD Boy 即将到来(😁)。 查表 查看当前数据库中所有的表,使用 show tables; 命令 由于当前数据库中还没有…

基于Python3的数据结构与算法 - 09 希尔排序

一、引入 希尔排序是一种分组插入排序的算法。 二、排序思路 首先取一个整数d1 n/2,将元素分为d1个组,每组相邻量取元素距离为d1,在各组内直接进行插入排序;取第二个整数d2 d1/2, 重复上述分组排序过程&#xff0…

Angular 2 中的样式绑定和 NgStyle

在 Angular 2 模板中绑定内联样式很容易。以下是一个绑定单个样式值的示例&#xff1a; 你还可以指定单位&#xff0c;例如在这里我们将单位设置为 em&#xff0c;但也可以使用 px、% 或 rem&#xff1a; <p [style.font-size.em]"3">A paragraph at 3em! &l…

CSS 自测题 -- 用 flex 布局绘制骰子(一、二、三【含斜三点】、四、五、六点)

一点 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>css flex布局-画骰子</title><sty…

vue3 滚动条触底监听

问题&#xff1a;指定区域内&#xff0c;显示返回的数据&#xff0c;要求先显示20条&#xff0c;区域超出部分滚动显示&#xff0c;对滚动条进行监听&#xff0c;滚动条触底后&#xff0c;继续显示下20条... 解决过程&#xff1a; 1.在区域的div上&#xff0c;添加scroll事件…

Unity 切换场景

场景切换前必须要将场景拖动到Build中 同步加载场景 using System.Collections; using System.Collections.Generic; //using UnityEditor.SearchService; using UnityEngine; // 场景管理 需要导入该类 using UnityEngine.SceneManagement;public class c3 : MonoBehaviour {…

redis五大基础类型【重点】

之前写过一点小知识&#xff1a;https://blog.csdn.net/qq_45927881/article/details/134959181?spm1001.2014.3001.5501 参考链接 https://xiaolincoding.com/redis/data_struct/command.html#%E4%BB%8B%E7%BB%8D 目录 1. string&#xff08;字符串&#xff09;2. Hash&#…

MySql安全加固:配置不同用户不同账号禁止使用旧密码禁止MySql进程管理员权限

MySql安全加固&#xff1a;配置不同用户不同账号&禁止使用旧密码&禁止MySql进程管理员权限 1.1 检查是否配置不同用户不同账号1.2 检查是否禁止使用旧密码1.3 禁止MySql进程管理员权限 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496…

【c++】通讯录管理系统

1.系统功能介绍及展示 2.创建项目 3.菜单实现 4.退出功能实现 5.添加联系人—结构体设计 6.添加联系人—功能实现 7.显示联系人 8.删除练习人—检测联系人是否存在 9.删除联系人—功能实现 10.查找联系人 11.修改联系人 12.清空通讯录 #include <iostream> #include <…

什么是VR虚拟社区|VR元宇宙平台|VR主题馆加盟

VR虚拟社区是指一种基于虚拟现实技术构建的在线社交平台或环境&#xff0c;用户可以在其中创建虚拟化的个人形象&#xff08;也称为avatars&#xff09;并与其他用户进行交流、互动和合作。在VR虚拟社区中&#xff0c;用户可以选择不同的虚拟场景和环境&#xff0c;如虚拟公园、…

fly-barrage 前端弹幕库(3):滚动弹幕的设计与实现

项目官网地址&#xff1a;https://fly-barrage.netlify.app/&#xff1b; &#x1f451;&#x1f40b;&#x1f389;如果感觉项目还不错的话&#xff0c;还请点下 star &#x1f31f;&#x1f31f;&#x1f31f;。 Gitee&#xff1a;https://gitee.com/fei_fei27/fly-barrage&a…

显示器开机正常,插入HDMI线却不显示画面,换了HDMI线还是不行?

环境&#xff1a; 惠普/P24VG4 DELL笔记本 问题描述&#xff1a; 显示器开机正常&#xff0c;插入HDMI线却不显示画面&#xff0c;换了HDMI线还是不行&#xff0c;是不是显示器坏了&#xff1f; 解决方案&#xff1a; 1.前往显示器设置菜单里面查看input 2.把输入源默认设…

二百二十五、海豚调度器——用DolphinScheduler调度执行Flume数据采集任务

一、目的 数仓的数据源是Kafka&#xff0c;因此离线数仓需要用Flume采集Kafka中的数据到HDFS中 在实际项目中&#xff0c;不可能一直在Xshell中启动Flume任务&#xff0c;一是项目的Flume任务很多&#xff0c;二是一旦Xshell页面关闭Flume任务就会停止&#xff0c;这样非常不…

案例研究|DataEase助力众陶联应对产业链数据可视化挑战

佛山众陶联供应链服务有限公司&#xff08;以下简称为“众陶联”&#xff09;成立于2016年&#xff0c;是由34家陶瓷企业共同创办的建陶行业工业互联网平台&#xff0c;股东产值占整个行业的22.5%。众陶联以数据赋能为核心&#xff0c;积极探索新的交易和服务模式&#xff0c;构…