JSON von URL in Python abrufen

Sahil Bhosale 15 Mai 2021
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 Bhosale avatar Sahil Bhosale avatar

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

Verwandter Artikel - Python JSON