這是通過抓包工具抓取到的json檔案

然後json檔案線上解析,把内容複制粘貼進去解析得出下面的内容(右邊框内)
json檔案的位址url="http://www.lagou.com/lbs/getAllCitySearchLabels.json"
用python來解析 并提取出其中的城市名
代碼如下:
#coding:utf8
import urllib2
#json解析庫,對應到lxml
import json
#json的解析文法,對應到xpath
import jsonpath
url="http://www.lagou.com/lbs/getAllCitySearchLabels.json"
header={"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0"}
request=urllib2.Request(url,headers=header)
response=urllib2.urlopen(request)
#取出json檔案裡的内容,傳回的格式是字元串
html=response.read()
#把json形式的字元串轉換成python形式的Unicode字元串
unicodestr=json.loads(html)
#python形式的清單
city_list=jsonpath.jsonpath(unicodestr,"$..name")
#列印每個城市
for i in city_list:
print i
#dumps()預設中文偉ascii編碼格式,ensure_ascii預設為Ture
#禁用ascii編碼格式,傳回Unicode字元串
array=json.dumps(city_list,ensure_ascii=False)
#把結果寫入到lagouCity.json檔案中
with open("lagouCity.json","w") as f:
f.write(array.encode("utf-8"))
列印結果如下圖:
。
。
。
————————————————————《分割線》——————————————————
另外再寫個簡單的流程案例:
import requests
import json
import jsonpath
url='http://baijiajiekuan.oss-cn-shanghai.aliyuncs.com/mongo/risk/original/data/20180206/04b94dac3ed84922b6d53c85514e700c.txt'
response=requests.get(url)
# 輸出編碼格式
# print(response.apparent_encoding)
# 解碼
response.encoding='utf8'
# 讀取reponse
html=response.text
# print(html)
# 把json格式字元串轉換成python對象
html=json.loads(html)
# print(html)
# 擷取score節點下的資料
qq=jsonpath.jsonpath(html,'$..score')
print(qq)
JsonPath與XPath文法對比:
Json結構清晰,可讀性高,複雜度低,非常容易比對,下表中對應了XPath的用法。
XPath | JSONPath | 描述 |
---|---|---|
| | 根節點 |
| | 現行節點 |
| or | 取子節點 |
| n/a | 取父節點,Jsonpath未支援 |
| | 就是不管位置,選擇所有符合條件的條件 |
| | 比對所有元素節點 |
| n/a | 根據屬性通路,Json不支援,因為Json是個Key-value遞歸結構,不需要。 |
| | 疊代器标示(可以在裡邊做簡單的疊代操作,如數組下标,根據内容選值等) |
| | | 支援疊代器中做多選。 |
| | 支援過濾操作. |
n/a | | 支援表達式計算 |
| n/a | 分組,JsonPath不支援 |