選択したPythonクローラーの10エピソード(データ抽出-jsonpathモジュール)
データ抽出-jsonpathモジュール
-
知識のポイント
- jsonpathモジュールの使用シナリオを理解する
- jsonpathモジュールの使用をマスターする
1.jsonpathモジュールの使用シナリオ
複数レベルのネストがある複雑な辞書がある場合、キーと添え字に基づいてバッチで値を抽出することはより困難です。jsonpathモジュールはこの問題点を解決できるので、jsonpathモジュールについて学習します。
jsonpathは、キーに従ってPython辞書のバッチデータ抽出を実行できます
- 知識のポイント:jsonpathモジュールの使用シナリオを理解する
2.jsonpathモジュールの使用方法
2.1jsonpathモジュールのインストール
jsonpathはサードパーティのモジュールであり、追加のインストールが必要です
pip install jsonpath
2.2データを抽出するjsonpathモジュールの方法
from jsonpath import jsonpath
ret = jsonpath(a, 'jsonpath语法规则字符串')
2.3jsonpath構文規則
2.4jsonpathの使用例
book_dict = {
"store": {
"book": [
{ "category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{ "category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{ "category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{ "category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
}
}
from jsonpath import jsonpath
print(jsonpath(book_dict, '$..author')) # 如果取不到将返回False # 返回列表,如果取不到将返回False
Three。jsonpath演習
Lagou市のJSONファイルhttp://www.lagou.com/lbs/getAllCitySearchLabels.jsonを例として取り上げて、すべての都市の名前のリストを取得し、ファイルに書き込みます。
参照コード:
import requests
import jsonpath
import json
# 获取拉勾网城市json字符串
url = 'http://www.lagou.com/lbs/getAllCitySearchLabels.json'
headers = {
"User-Agent": "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"}
response =requests.get(url, headers=headers)
html_str = response.content.decode()
# 把json格式字符串转换成python对象
jsonobj = json.loads(html_str)
# 从根节点开始,获取所有key为name的值
citylist = jsonpath.jsonpath(jsonobj,'$..name')
# 写入文件
with open('city_name.txt','w') as f:
content = json.dumps(citylist, ensure_ascii=False)
f.write(content)