「JSON(JavaScript Object Notation, JS 對象簡譜) 是一種輕量級的數據交換格式。它基於 ECMAScript (歐洲計算機協會制定的js規範)的一個子集,採用徹底獨立於編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得 JSON 成爲理想的數據交換語言。易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提高網絡傳輸效率。」——《百度百科》html
我們在爬取網站的時候,常常會遇到獲取了html卻沒有在標籤裏找到數據的狀況。這種狀況大機率html只是一個框架,而數據是JavaScript腳本從服務器獲取JSON數據後再把數據寫入標籤的。因此咱們直接獲取html會找不到須要的數據。解決的方法也不難,使用瀏覽器的開發者模式能夠看到網頁對服務器發出的請求,找到獲取數據的請求後模擬該請求便可從服務器獲取JSON數據。獲取JSON數據後便可用json庫轉化爲python的數據類型。下面是JSON和python數據類型的對照表。python
Python |
JSON |
dict |
object |
list,tuple |
array |
str,unicode |
string |
int,float | number |
True | true |
False |
false |
None |
null |
JSON庫有4個經常使用的方法,下面來一一介紹給你們。
json.loads()該方法是將JSON字符串轉化爲python數據類型。編程
#導入json庫import json
#定義JSON格式的字符串json_str = '{"測試": 123}'
#使用loads()將JSON字符串轉化爲python數據類型,將會返回{"測試": 123}json.loads(json_str)
#導入json庫import json
#定義一個字典dic = {"測試": 123}
#使用dumps()將python字典轉化爲JSON字符串,將會返回'{"測試": 123}'#ensure_ascii參數設置爲False時容許有中文json.dumps(dic, ensure_ascii=False)
#導入json庫import json
#定義JSON格式的字符串json_str = '{"測試": 123}'
#將字符串寫入文件with open(file, 'w', encoding='utf-8') as f: f.write(json_str)#使用load()從文件讀取JSON字符串轉化爲python數據類型,將會返回一個字典with open(file, 'r', encoding='utf-8') as f: j = json.load(f)
#導入json庫import json
#定義一個字典dic = {"測試": 123}
#使用dump()將python數據類型轉化爲JSON字符串後寫入文件,indent參數設置縮進with open(file, 'w', encoding='utf-8') as f: json.dump(dic, f, ensure_ascii=False, indent=4)