Dapatkan kode berikut di salah satu skrip saya:
#
# url is defined above.
#
jsonurl = urlopen(url)
#
# While trying to debug, I put this in:
#
print jsonurl
#
# Was hoping text would contain the actual json crap from the URL, but seems not...
#
text = json.loads(jsonurl)
print text
Yang ingin saya lakukan adalah mendapatkan {{.....etc.....}}
hal - hal yang saya lihat di URL ketika saya memuatnya di Firefox ke dalam skrip saya sehingga saya dapat mengurai nilai dari itu. Saya telah mencari di Google satu ton, tetapi saya belum menemukan jawaban yang bagus tentang bagaimana sebenarnya mendapatkan {{...}}
barang - barang dari URL yang berakhir .json
dengan objek dalam skrip Python.
json.loads
yang mengkonsumsi penggunaan string (itulah sebabnya.read()
diperlukan, gunakanjson.load(response)
sebagai gantinya.urllib2
lebih disukai di Python2?Saya akan menebak bahwa Anda sebenarnya ingin mendapatkan data dari URL:
Atau, periksa dekoder JSON di pustaka permintaan .
sumber
Ini mendapatkan kamus dalam format JSON dari halaman web dengan Python 2.X dan Python 3.X:
Lihat juga: Baca dan tulis contoh untuk JSON
sumber
Saya telah menemukan ini sebagai cara termudah dan paling efisien untuk mendapatkan JSON dari halaman web saat menggunakan Python 3:
sumber
from urllib.request import urlopen
Semua yang dilakukan oleh panggilan
urlopen()
(sesuai dengan dokumen ) adalah mengembalikan objek seperti file. Setelah memilikinya, Anda perlu memanggilread()
metode untuk benar-benar menarik data JSON di seluruh jaringan.Sesuatu seperti:
sumber
Dalam Python 2, json.load () akan berfungsi sebagai ganti json.loads ()
Sayangnya, itu tidak berfungsi di Python 3. json.load hanyalah pembungkus di sekitar json.loads yang memanggil read () untuk objek seperti file. json.loads memerlukan objek string dan output dari urllib.urlopen (url) .read () adalah objek byte. Jadi kita harus mendapatkan pengkodean file untuk membuatnya bekerja di Python 3.
Dalam contoh ini kita akan menanyakan header untuk pengkodean dan kembali ke utf-8 jika kita tidak mendapatkannya. Objek header berbeda antara Python 2 dan 3 sehingga harus dilakukan dengan cara yang berbeda. Menggunakan permintaan akan menghindari semua ini, tetapi kadang-kadang Anda harus tetap menggunakan perpustakaan standar.
sumber
Tidak perlu menggunakan perpustakaan tambahan untuk mem-parsing json ...
json.loads()
mengembalikan kamus .Jadi dalam kasus Anda, lakukan saja
text["someValueKey"]
sumber
Jawaban terlambat, tetapi untuk
python>=3.6
Anda dapat menggunakan:Instal
dload
dengan:sumber
yang Anda butuhkan
import requests
dan gunakan dari metode json ():Tentu saja, metode ini juga berfungsi:
sumber
Anda bisa menggunakan
json.dumps
:untuk memuat json dan menuliskannya di file, kode berikut berguna:
sumber