
文章目錄
在玩爬蟲的時候,總會遇到一些無法通過xpath提取的資料,通常都會存放在JSON格式中,所我這學一下jsonpath。
可以看看我這篇部落格,不過有不全的地方請多多擔待,提出來一起學習一起進步!
JSON學習筆記jsonpath是對JSON格式提取檔案的東西,看看這熟悉的path,有沒有聯想到xpath?差不多,都是用來提取資料的東西
- xpath是用于提取HTML和XML的
- jsonpath是用于提取JSON格式的
先安裝jsonpath第三方庫
pip install jsonpath -i https://pypi.doubanio.com/simple
符号 | 描述 |
$ | 查詢的根節點對象,用于表示一個json資料,可以是數組或對象 |
@ | 過濾器(filter predicate)處理的目前節點對象 |
* | 擷取所有節點 |
. | 擷取子節點 |
… | 遞歸搜尋,篩選所有符合條件的節點 |
?() | 過濾器表達式,篩選操作 |
[start:end] | 數組片段,區間為[start,end),不包含end |
[A]或[A,B] | 疊代器下标,表示一個或多個數組下标 |
我們的資料是從王者網站拿的——
王者網站大概就是張這個樣子
然後我們開始聯系jsonpath吧
import jsonpath # 導入jsonpath包
import json # 導入json包
import requests # 導入爬蟲包
with open("王者英雄.json",'wb') as f:
f.write(requests.get('https://pvp.qq.com/web201605/js/herolist.json').content)
# 将json檔案儲存到本地
with open('王者英雄.json', 'r', encoding="utf-8") as f:
js = f.read()
# 讀取
c = json.loads(js) # 轉成python資料
print(jsonpath.jsonpath(c, '$.*.cname')) # 使用jsonpath将英雄名字取出來
'''
$.:根目錄
*:根目錄下所有節點
cname:所有cname元素的值
'''
運作結果:
拜拜 學習如逆水行舟,不進則退,是以一定要在學習後多加練習~~~~~
那麼今天就到這裡了哦,( _ )/~~