天天看點

jsonpath提取王者全英雄名字前言JSON是什麼jsonpath結語

jsonpath提取王者全英雄名字前言JSON是什麼jsonpath結語

文章目錄

在玩爬蟲的時候,總會遇到一些無法通過xpath提取的資料,通常都會存放在JSON格式中,所我這學一下jsonpath。

可以看看我這篇部落格,不過有不全的地方請多多擔待,提出來一起學習一起進步!

JSON學習筆記

jsonpath是對JSON格式提取檔案的東西,看看這熟悉的path,有沒有聯想到xpath?差不多,都是用來提取資料的東西

  1. xpath是用于提取HTML和XML的
  2. jsonpath是用于提取JSON格式的

先安裝jsonpath第三方庫

pip install jsonpath -i https://pypi.doubanio.com/simple

符号 描述
$ 查詢的根節點對象,用于表示一個json資料,可以是數組或對象
@ 過濾器(filter predicate)處理的目前節點對象
* 擷取所有節點
. 擷取子節點
遞歸搜尋,篩選所有符合條件的節點
?() 過濾器表達式,篩選操作
[start:end] 數組片段,區間為[start,end),不包含end
[A]或[A,B] 疊代器下标,表示一個或多個數組下标

我們的資料是從王者網站拿的——

王者網站

大概就是張這個樣子

jsonpath提取王者全英雄名字前言JSON是什麼jsonpath結語

然後我們開始聯系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元素的值
'''      

運作結果:

jsonpath提取王者全英雄名字前言JSON是什麼jsonpath結語

拜拜 學習如逆水行舟,不進則退,是以一定要在學習後多加練習~~~~~

那麼今天就到這裡了哦,( _ )/~~

jsonpath提取王者全英雄名字前言JSON是什麼jsonpath結語