python爬虫類4-jsonデータ処理

4348 ワード

JSON(JavaScript Object Notition)は軽量レベルのデータ交換フォーマットであり、人々が読みやすく書くことができる.同時に機械の解析と生成を容易にした.Webサイトのフロントとバックグラウンド間のデータインタラクションなど、データインタラクションを行うシーンに適しています.
python 2.7はJSONを持参しており、import jsonで呼び出すことができます.
公式ドキュメント:http://docs.python.org/library/json.html
Jsonオンライン解析サイト:http://www.json.cn/#
一、JSON
jsonはjavascriptの配列とオブジェクトであり、この2つの構造によって様々な複雑な構造を表すことができます.
オブジェクト:オブジェクトがjsで示す{ }で囲まれた内容、データ構造が{ key:value, key:value, ... }のキー値ペアの構造、オブジェクト向け言語ではkeyがオブジェクトの属性、valueが対応する属性値であるので分かりやすい、値の取り方はオブジェクトである.keyは、数値、文字列、配列、オブジェクトなどのタイプの属性値を取得します.
配列:配列はjsで中括弧[ ]で囲まれた内容であり、データ構造は["Python", "javascript", "C++", ...]であり、値の取り方はすべての言語と同様にインデックスで取得され、フィールド値のタイプは数字、文字列、配列、オブジェクトのいくつかであってもよい.
1. json.loads()
Json形式文字列復号をPythonオブジェクトに変換するjsonからpythonへのタイプ変換は以下のように対照的である.
python爬虫4——json数据处理_第1张图片
#!/usr/bin/env python
# -*- coding:utf-8 -*-

import json


strList = '[1, 2, 3, 4]'
print json.loads(strList)
# [1, 2, 3, 4]

strDict = '{"city": "  ", "name": "  "}'
print json.loads(strDict)
# json     Unicode  

出力結果:
[1, 2, 3, 4] {u'city': u'\u5317\u4eac', u'name': u'\u5927\u732b'}
2. json.dumps()
pythonタイプをjson文字列に変換し、strオブジェクトを返してPythonオブジェクトの符号化をJson文字列に変換します.
python元のタイプからjsonタイプへの変換は、次のように対照的です.
python爬虫4——json数据处理_第2张图片
#   :json.dumps()          ascii  
#      ensure_ascii=False   ascii  , utf-8  
# chardet.detect()    ,   confidence      

print json.dumps(dictStr)
# '{"city": "\\u5317\\u4eac", "name": "\\u5927\\u5218"}'

出力:{「city」:「u 5317u 4 eac」、「name」:「u 5927u 732 b」}
print chardet.detect(json.dumps(dictStr))

出力:{'confidence':1.0,'language':','encoding':'ascii'}
print json.dumps(dictStr, ensure_ascii=False)
# {"city": "  ", "name": "  "}

print chardet.detect(json.dumps(dictStr, ensure_ascii=False))
# {'confidence': 0.99, 'encoding': 'utf-8'}

3. json.dump()
Python内蔵タイプをjsonオブジェクトにシーケンス化してファイルに書き込む
# json_dump.py

import json

listStr = [{"city": "  "}, {"name": "  "}]
json.dump(listStr, open("listStr.json","w"), ensure_ascii=False)

dictStr = {"city": "  ", "name": "  "}
json.dump(dictStr, open("dictStr.json","w"), ensure_ascii=False)

このコードを使用すると、jsonファイルを直接生成できます.

4. json.load()
読み取りファイルのjson形式の文字列要素をpythonタイプに変換
# json_load.py

import json

strList = json.load(open("listStr.json"))
print strList

# [{u'city': u'\u5317\u4eac'}, {u'name': u'\u5927\u5218'}]

strDict = json.load(open("dictStr.json"))
print strDict
# {u'city': u'\u5317\u4eac', u'name': u'\u5927\u5218'}

このコードでファイルを読み込むことができます!
JsonPath
JsonPathは情報抽出クラスライブラリで、JSONドキュメントから指定された情報を抽出するツールで、Javascript、Python、PHP、Javaなど多くの言語実装バージョンを提供しています.
JsonPathはJSONにとってXPATHがXMLであることに相当する.
ダウンロード先:https://pypi.python.org/pypi/jsonpath
インストール方法:Download URLリンクをクリックしてjsonpathをダウンロードし、解凍した後にpython setup.py installを実行する
公式ドキュメント:http://goessner.net/articles/JsonPath