最近入手了一只Raspberry Pi,于是起了學(xué)習(xí)Python的念頭.由于筆者是初學(xué)者,并沒(méi)有什么深刻的認(rèn)識(shí),或者說(shuō)是并沒(méi)有認(rèn)識(shí).于是在學(xué)習(xí)的過(guò)程中記給自己一種json格式的數(shù)據(jù)解析方法,用以與同是初學(xué)者共同學(xué)習(xí)......
JSON格式的數(shù)據(jù)漸漸取代XML成為主流的數(shù)據(jù)結(jié)構(gòu),這里記一種利用urllib2和json模塊解析JSON的方法.在python3中urllib2被改為urllib.request模塊.
urllib模塊
python 3.x中urllib庫(kù)和urilib2庫(kù)合并成了urllib庫(kù).其中urllib2.urlopen()變成了urllib.request.urlopen()而urllib2.Request()變成了urllib.request.Request() .
json模塊
使用json模塊解析json數(shù)據(jù)只需要使用期loads()方法即可.將網(wǎng)絡(luò)請(qǐng)求下來(lái)的數(shù)據(jù)加載成為json結(jié)構(gòu)的數(shù)據(jù).
這里請(qǐng)求一個(gè)有道翻譯的url http://fanyi.youdao.com/openapi.do?keyfrom=boomshakalaka&key=869110526&type=data&doctype=json&version=1.1&q=good .
請(qǐng)求成功之后返回的數(shù)據(jù)為:
{
"basic": {
"explains": [
"n. 好處蘑斧;善行;慷慨的行為",
"adj. 好的爷耀;優(yōu)良的中狂;愉快的奢入;虔誠(chéng)的",
"adv. 好",
"n. (Good)人名赊时;(英)古德吕粗;(瑞典)戈德"
],
"phonetic": "g?d",
"uk-phonetic": "g?d",
"us-phonetic": "ɡ?d"
},
"errorCode": 0,
"query": "good",
"translation": [
"好"
],
"web": [
{
"key": "Good",
"value": [
"好",
"善",
"商品"
]
},
{
"key": "public good",
"value": [
"公共物品",
"公益事業(yè)",
"公共財(cái)"
]
},
{
"key": "Good Doctor",
"value": [
"? ??",
"Good Doctor (TV series)",
"好醫(yī)生"
]
}
]
}
在Python3之前使用urllib2進(jìn)行json結(jié)構(gòu)數(shù)據(jù)的解析
import urllib2
import json
response = urllib2.urlopen('http://fanyi.youdao.com/openapi.do?keyfrom=boomshakalaka&key=869110526&type=data&doctype=json&version=1.1&q=good')
data = json.loads(response.read())
print data
Python3使用urllib.request進(jìn)行json結(jié)構(gòu)數(shù)據(jù)的解析
這里要注意一下 直接用urllib.request模塊的urlopen()獲取頁(yè)面,page的數(shù)據(jù)格式為bytes類型,需要decode()解碼轉(zhuǎn)換成str類型.
import urllib.request
import json
response = urllib.request.urlopen('http://fanyi.youdao.com/openapi.do?keyfrom=boomshakalaka&key=869110526&type=data&doctype=json&version=1.1&q=good')
response = response.read().decode('utf-8')
data = json.loads(response)
print(data)
END
關(guān)于urllib2模塊的相關(guān)問(wèn)題參考python urllib2詳解及實(shí)例
關(guān)于urllib模塊的相關(guān)問(wèn)題參考Python3學(xué)習(xí)筆記(urllib模塊的使用).
關(guān)于json模塊的相關(guān)問(wèn)題參考json模塊使用總結(jié)——Python