Python爬蟲數據的分類及json數據使用小結
數據的結構化分類
一般來講對我們而言,需要抓取的是某個網站或者某個應用的內容,提取有用的價值。內容一般分為三部分,結構化的數據、半結構化的數據和非機構化數據。
1.結構化數據:
可以用統一的結構加以表示的數據。可以使用關系型數據庫表示和存儲,表現為二維形式的數據,一般特點是:數據以行為單位,一行數據表示一個實體的信息,每一行的數據的屬性是相同的。
2.半結構化數據:
結構化數據的一種形式,並不符合關系型數據庫或其他數據表的形式關聯起來的數據模型結構,但包含相關標記,用來分隔語義元素以及對記錄和字段進行分層。因此他也被成為自描述的結構。常見的半結構數據有:html,xml和json等、實際上是以樹或者圖的結構來存儲的。
對於半結構化數據,節點中屬性的順序是不重要的,不同的半結構化數據的屬性的個數是不一樣的。這樣的數據格式,可以自由的表達很多有用的信息,包含自描述信息。所以半結構化數據的擴展性很好,特別適合於在互聯網中大規模傳播。
3.非結構化數據
就是沒有固定的結構。各種文檔,圖片,視頻或者音頻都屬於非結構化數據。對於這類數據,我們一般直接整體進行存儲,而且一般存儲為二進制形式。
json數據
json(JavaScript Object Notation,JS對象標記)是一種輕量級的數據交換格式。他基於ECMAScript(w3c制定的JS規范)的一個子集,采用完全獨立於編程語言的文本格式來存儲和表示數據。簡介和清晰的層次結構使得JSON成為理想的數據交換語言。
特點:易於閱讀、易於機器生成、有效提升網絡速度。
JSON語法規則:在JS語言中,一切都是對象。因此,任何支持的類型都可以通過json來表示。例如字符串、數字,對象,數組。
Js中對象和數組是比較特殊並且常用的兩種類型:
1.對象表示為鍵值對{name:’zhangsan’,age:’7′}
2.數據有逗號分隔[1,2,3,4,5]
3.花括號保存對象
4.方括號保存數組。
js的對象就相當於python中的字典
js的數組就相當於Python中的列表
因為json用來存儲js的對象或者數組,所以在Python中我們可以將json轉化為list或者dict。
解析json的包json:
json.dumps(python的list或者dict)—->(返回值)—->json字符串。
json.loads(json字符串)——>(返回值)—–>python的list或者dict.
json.dump(list/dict,fp)—>list,或者字典保存到json文件中。
json.load(fp)—>list/dict:從json文件中讀出json數據。
json鍵值對是用來保存js對象的一種方式,和js對象的寫法頁大同小異,比如:
{“firstName”:“Json”,“Class”:“aid1111”}等價於下面這條js語句:{firstName:“Json”,Class:“aid1111”}。
很多人搞不清楚json和js對象的關系,甚至誰是誰都不清楚。其實可以這麼理解:【JSON是JS對象的字符串表達式,他使用文本形式表示一個JS對象的信息,本質是一個字符串。】
如var obj = {a:“hello”,b:“World”}這是一個js對象。註意,鍵名也是可以用引號包裹的var json = ‘ {“a”:“hello”,“b”:“World”}’這是一個json字符串,本質上是一個字符串。
JSON作為數據包格式傳輸的時候具有更高的效率,這是因為JSON不想xml那樣具有嚴格的閉合標簽,這就讓有效數據量與總數據包比大大提升,從而減少同等數據流量的情況下,網絡的傳輸的壓力大大減低。
以上就是Python爬蟲數據的分類及json數據使用小結的詳細內容,更多關於Python爬蟲數據的分類及json數據使用的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- Python3內置json模塊編碼解碼方法詳解
- 關於 Python json中load和loads區別
- Python序列化模塊之pickle與json詳解
- Python常用標準庫詳解(pickle序列化和JSON序列化)
- Python序列化與反序列化相關知識總結