? ? ? ?在爬蟲爬取數據的之前,必須先系統的了解一下我們待爬取的數據有哪些格式,這樣做的好處在與能針對不同的數據類型采取不同分方法手段。
一、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是一種針對流媒體傳輸而設計的文件容器格式,支持把不同的數據流封裝和同步傳輸,在數字媒體領域用途廣泛。