JSON von URL in Python abrufen
Wann immer wir Daten von einem Webserver unter Verwendung einer URL abrufen möchten, sollten diese Daten ein bestimmtes Format haben. Wenn wir Daten vom Webserver abrufen möchten, verwenden wir im Allgemeinen entweder das JSON- oder das XML-Format.
Wir bevorzugen JSON gegenüber XML, da es in der Softwareindustrie sehr beliebt geworden ist. In Python gibt es verschiedene Bibliotheken, um JSON zu verarbeiten.
In diesem Tutorial werden wir die Module json
und request
verwenden, die in Python verfügbar sind.
Die JSON-Daten, die wir abrufen, stammen von der folgenden URL. Über diese URL können wir alle Daten abrufen, die sich auf die Benutzer
beziehen, wie Name, E-Mail-Adresse, Adresse usw. Die Verwendung ist kostenlos.
https://jsonplaceholder.typicode.com/users
In Bezug auf Restful-APIs werden URLs als Endpunkte bezeichnet. In diesem Tutorial werden wir diese beiden Wörter austauschbar verwenden. In der obigen URL bezieht sich /users
auf einen Endpunkt.
Wenn Sie die obige URL im Browser öffnen, werden alle Daten zu users
im JSON-Format angezeigt. Es ist unten gezeigt.
[
{
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "Sincere@april.biz",
"address": {
"street": "Kulas Light",
"suite": "Apt. 556",
"city": "Gwenborough",
"zipcode": "92998-3874",
"geo": {
"lat": "-37.3159",
"lng": "81.1496"
}
},
"phone": "1-770-736-8031 x56442",
"website": "hildegard.org",
"company": {
"name": "Romaguera-Crona",
"catchPhrase": "Multi-layered client-server neural-net",
"bs": "harness real-time e-markets"
}
},
]
Beachten Sie, dass wir Ihnen im obigen Codeblock nur die JSON-Daten gezeigt haben, die sich auf einen einzelnen Benutzer beziehen. Dies dient nur zu Erklärungszwecken. Wenn Sie jedoch die URL besuchen, werden die Daten für alle Benutzer angezeigt.
Der JSON bezieht sich auf JavaScript Object Notation
. Es wird zum Senden und Empfangen von Daten zwischen einem Server und einem Client und umgekehrt verwendet. Verwechseln Sie sich hier nicht mit dem Wort JavaScript
. JSON ist unabhängig von jeder Programmiersprache. In JSON verwenden wir zwei Arten von Klammern, um die Daten zu formatieren. Eine ist die eckige Klammer []
, die ein array
oder eine Liste
darstellt, und die andere ist die geschweifte Klammer {}
, die ein Objekt
darstellt.
Die Daten im JSON liegen immer in Form von Schlüssel-Wert
-Paaren in Anführungszeichen ""
vor. Wenn Sie also auf einen Wert zugreifen möchten, müssen Sie den diesem Wert zugeordneten Schlüssel
verwenden. Angenommen, wir möchten über die obigen JSON-Daten auf den Benutzernamen zugreifen. Wir werden den Schlüssel name
verwenden, um den Wert Leanne Graham
zu erhalten, der der Name des ersten Benutzers ist. Beachten Sie außerdem, dass in JSON keine Kommentare zulässig sind.
Abrufen und Zugreifen auf JSON-Daten in Python
Zuerst müssen wir die Module request
und json
importieren, um die Daten abzurufen und darauf zuzugreifen.
import requests
import json
Abrufen und Konvertieren von Daten von der URL in eine Zeichenkette
Der erste Schritt, den wir hier ausführen müssen, ist das Abrufen der JSON-Daten mithilfe der Bibliothek request
.
url = requests.get("https://jsonplaceholder.typicode.com/users")
text = url.text
print(type(text))
Ausgabe:
<class 'str'>
Die Bibliothek request
verfügt über eine Methode namens get()
, die eine URL als Parameter verwendet und dann eine Anforderung GET
an die angegebene URL sendet. Die Antwort, die wir vom Server erhalten, wird in der Variablen url
gespeichert.
Diese in der Variablen url
gespeicherte Antwort muss mit Hilfe der Methode .text
als url.text
in eine Zeichenkette konvertiert werden. Und dann speichern wir das Ergebnis in der Variablen text
. Wenn Sie den Typ der Variablen text
drucken, ist dieser vom Typ <class 'str'>
.
Parsethe JSON-Daten
Beim Parsen werden Zeichenkettendaten in das JSON-Format konvertiert. Dafür verwenden wir das Modul json
.
data = json.loads(text)
print(type(data))
Ausgabe:
<class 'list'>
Das Modul json
enthält eine Methode namens load()
, das s
in load()
steht für string. Da wir Zeichenkettendaten in JSON konvertieren möchten, verwenden wir diese Methode. Innerhalb dieser Methode müssen wir die Variable text
, die die Zeichenkettendaten json.loads(text)
enthält, übergeben und in der Variablen data
speichern.
Jetzt haben die data
die gesamte JSON-Antwort. Wenn Sie den Typ der Variablen data
drucken, ist dieser vom Typ <class 'list'>
, da in diesem Fall die JSON-Antwort mit eckigen Klammern []
beginnt und in Python Listen mit eckigen Klammern beginnen Klammern.
Greifen Sie auf die JSON-Daten zu
Nachdem wir die JSON-Daten analysiert haben, können wir mit der Variablen data
auf die einzelnen Werte zugreifen, die wir möchten. Um auf die Details des ersten Benutzers wie Name und Adresse zuzugreifen, haben wir folgende Möglichkeiten.
import json
import requests
url = requests.get("https://jsonplaceholder.typicode.com/users")
text = url.text
data = json.loads(text)
user = data[0]
print(user["name"])
address = user["address"]
print(address)
Ausgabe:
Leanne Graham
{'street': 'Kulas Light', 'suite': 'Apt. 556', 'city': 'Gwenborough', 'zipcode': '92998-3874', 'geo': {'lat': '-37.3159', 'lng': '81.1496'}}
Um auf den ersten Benutzer aus der Benutzerliste zuzugreifen, müssen wir den Index 0
aus den JSON-Daten verwenden, der in einer Variablen namens data
gespeichert ist, und dann die gesamten Details dieses ersten Benutzers in user
speichern. Jetzt ist dieser users
ein Objekt, das alle Details enthält, die sich auf diesen Benutzer beziehen. Um auf den Namen zuzugreifen, müssen wir nur den Schlüssel name
in der Variablen user
wie user['name']
übergeben und dann ausdrucken. Es wird der Name des Benutzers in der Konsole gedruckt.
Und um auf die Adresse zuzugreifen, müssen wir den Schlüssel address
in der Benutzervariablen übergeben, d. H. user['address']
, ihn dann in einer Variablen namens address
speichern und dann drucken. Dadurch erhalten Sie ein Objekt, das alle spezifischen Details zum Adressfeld enthält, z. B. Wohnungsnummer, Straßenname, Postleitzahl usw. Nehmen wir an, Sie möchten aus diesen Details nur die zipcode
des Benutzers. dann müssen Sie den Schlüssel zipcode
im Objekt address
übergeben.
Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.
LinkedIn