1. 程式人生 > >python爬蟲 如何解析json檔案 json檔案的解析提取和jsonpath的應用

python爬蟲 如何解析json檔案 json檔案的解析提取和jsonpath的應用

這是通過抓包工具抓取到的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的用法。

XPathJSONPath描述
/$根節點
.@現行節點
/.or[]取子節點
..n/a取父節點,Jsonpath未支援
//..就是不管位置,選擇所有符合條件的條件
**匹配所有元素節點
@n/a根據屬性訪問,Json不支援,因為Json是個Key-value遞迴結構,不需要。
[][]迭代器標示(可以在裡邊做簡單的迭代操作,如陣列下標,根據內容選值等)
|[,]支援迭代器中做多選。
[]?()支援過濾操作.
n/a()支援表示式計算
()n/a分組,JsonPath不支援