Heim BlogWeb-Scraping So lesen und analysieren Sie JSON mit Python

So lesen und analysieren Sie JSON mit Python

von Kadek

JSON oder JavaScript Object Notation ist ein leichtes Datenaustauschformat. Es ist einfach zu lesen, zu schreiben, zu analysieren und sogar zu generieren. JSON wird häufig in Webanwendungen verwendet, wo es zur Übertragung von Daten zwischen einem Webbrowser und einem Server dient.

Im Allgemeinen ist JSON ein textbasiertes Format zum Speichern und Austauschen von Daten. Es wird häufig in der Webentwicklung verwendet, um Daten zwischen Webbrowsern und Servern zu übertragen. JSON wird auch verwendet, um Daten über APIs zu übertragen oder Daten an Benutzer zu senden. Daher tritt es häufig beim Web-Scraping auf.

JSON und seine Struktur verstehen

JSON-Daten sind eine geordnete Struktur, die aus Schlüssel-Wert-Paaren besteht. Schlüssel müssen Zeichenfolgen sein. Werte können jeden Datentyp haben, einschließlich Zeichenfolgen, Zahlen, Arrays und Objekte.


Abbildung, die die wichtigsten Aspekte von JSON hervorhebt, einschließlich seiner geordneten Struktur, Schlüssel-Wert-Paare und Datentypen.
Veranschaulichung der Struktur und Komponenten von JSON-Daten

JSON ist ein leichtes Datenaustauschformat, das für Menschen und Maschinen leicht zu lesen und zu schreiben ist. Es wird in REST-APIs, AJAX und WebSockets verwendet. Die einfachste JSON-Struktur ist ein einzelnes Schlüssel-Wert-Paar, wie zum Beispiel:

{
  "title": "Example"
}

Dieser Ansatz ermöglicht JSON eine einfache Strukturierung von Daten, was dazu beigetragen hat, dass es sich zu einem beliebten Format entwickelt hat. Hier sind einige der Vorteile der Verwendung von JSON:

  1. JSON-Daten sind für Menschen lesbar, wodurch sie leicht zu verstehen und zu debuggen sind.
  2. JSON ist ein einfaches Format, das von Maschinen analysiert und generiert werden kann.
  3. Die JSON-Datenstruktur ist aus den Daten selbst ersichtlich und somit leicht verständlich.

JSON unterstützt verschiedene Datentypen, einschließlich Zeichenfolgen, Zahlen, Arrays und Objekte. Das folgende JSON-Objekt hat beispielsweise drei Eigenschaften:

{
  "title": "Example",
  "year": 2023,
  "article": {
    "title": "JSON parsing",
    "language": "Python"
  }
}

Die Artikeleigenschaft ist im obigen Beispiel im Hauptobjekt verschachtelt. Dadurch können wir komplexere Daten in einem JSON-Objekt speichern.

Grundlagen des Python-JSON-Parsings

Beim JSON-Parsing, auch Deserialisierung genannt, wird ein JSON-String oder eine JSON-Datei in eine Datenstruktur konvertiert, die von einem Programm manipuliert werden kann. Gleichzeitig ist die JSON-Serialisierung der Prozess der Konvertierung einer Datenstruktur in einen JSON-String oder eine JSON-Datei. Mit anderen Worten: Beim JSON-Parsen werden JSON-Daten gelesen, während bei der JSON-Serialisierung JSON-Daten geschrieben werden.

Obwohl die Datentypen JSON und Python möglicherweise Ähnlichkeiten aufweisen, ist es wichtig zu verstehen, dass es Unterschiede geben kann. Hier ist die Tabelle, die die Entsprechung zwischen Datentypen in JSON und Python zeigt:

JSON-Datentyp

Python-Datentyp

Nummer

int, float

Zeichenfolge

str

Boolescher Wert

bool

WAHR

WAHR

FALSCH

FALSCH

Objekt

dict

Array

Liste

Objekt (leer)

dict() oder {}

Array (leer)

list() oder ()

Null

Keiner

JSON Undefiniert

Nicht direkt gleichwertig

JSON NaN

float(’nan‘)

Sets

eingestellt (Umbau erforderlich)

Bytes und Bytearrays

Bytes, Bytearray

Aufzählungen

enum.Enum

JSON- und Python-Datentypen sind im Allgemeinen kompatibel, bei der Arbeit mit ihnen kann es jedoch zu einigen Unterschieden und Überlegungen kommen, insbesondere bei komplexeren Datenstrukturen und benutzerdefinierten Objekten.

Sie können das integrierte JSON-Modul (JSON Encoder und Decoder) verwenden, um JSON-Daten in Python zu lesen. Das JSON-Modul bietet zwei Methoden zum Konvertieren von JSON-Daten in Python-Objekte:

  • Loads() konvertiert einen JSON-String in ein Python-Objekt.
  • Load() konvertiert eine JSON-Datei in ein Python-Objekt.

Die von diesen Methoden zurückgegebenen Objekte können Listen oder Wörterbücher sein.

Parsen von JSON-Strings in Python

Schauen wir uns ein Beispiel für die Verwendung der JSON-Bibliothek zum Parsen einer Zeichenfolge an. Dazu erstellen wir eine neue Datei im .py-Format und importieren die Bibliothek:

import json

Als Nächstes erstellen wir eine Variable, um die JSON-Zeichenfolge als Text zu speichern:

json_string = '{"name": "John Doe", "age": 30}'

Anschließend verwenden wir die JSON-Bibliothek, um die Zeichenfolge in ein JSON-Objekt zu analysieren:

json_object = json.loads(json_string)

Jetzt können wir mit diesen Daten wie mit einem normalen Wörterbuch arbeiten. Hier ist ein Beispiel für den Zugriff auf die Daten:

# Get the name
name = json_object("name")

# Get the age
age = json_object("age")

Um Daten in einem Wörterbuch zu ändern, können Sie auch über die Taste auf die Daten zugreifen.

JSON-Datei analysieren

Sehen wir uns nun an, wie eine JSON-Datei analysiert wird. Dazu erstellen wir eine Datei namens „data.json“ und fügen den JSON-Code aus dem vorherigen Beispiel hinzu. Anschließend aktualisieren wir das vorherige Beispiel, um die Daten aus der Datei zu lesen:

with open("data.json", "r") as f:
    json_object = json.load(f)

Als Ergebnis haben wir dieselben Daten in die Variable json_object übernommen.

JSON-Serialisierung in Python

Wie bereits erwähnt, umfasst die Serialisierung die Konvertierung eines JSON-Objekts in eine Zeichenfolge oder Datei. Dazu können wir die folgenden Befehle verwenden:

  • dump() kann Python-Objekte in eine Datei konvertieren.
  • dumps() kann Python-Objekte in einen String konvertieren.

Schauen wir uns jeden dieser Befehle anhand eines Beispiels an.

Konvertieren eines Python-Objekts in einen JSON-String

Lassen Sie uns den Inhalt der Variablen json_object aus dem vorherigen Beispiel als JSON-Objekt verwenden. Um die Daten in eine Zeichenfolge umzuwandeln, verwenden Sie den folgenden Befehl:

json_string = json.dumps(json_object)

Die resultierende Zeichenfolge ist identisch mit der, die wir im ersten Beispiel angegeben haben.

Ein Python-Objekt in eine Datei schreiben

Um eine Datei zu erstellen und ein JSON-Objekt zu speichern, verwenden wir den Befehl dump():

with open("data.json", "w") as f:
    json.dump(json_object, f)

Dadurch wird der Inhalt der Datei data.json mit den neuen Daten aus dem json_object-Objekt überschrieben.

JSON-Daten ändern

Beim Arbeiten mit JSON-Daten in Python ist es häufig erforderlich, den Inhalt eines JSON-Objekts zu ändern. In diesem Abschnitt werden verschiedene Möglichkeiten zum Hinzufügen, Aktualisieren und Löschen von Daten in einem JSON-Objekt untersucht.

Daten zum JSON-Objekt hinzufügen

Neue Daten können einem JSON-Objekt nur über Schlüssel-Wert-Paare hinzugefügt werden. Dazu müssen Sie auf das Objekt zugreifen und den neuen Wert festlegen:

json_object("city") = "New York"

Es wird erstellt, wenn der Schlüssel nicht im Objekt vorhanden ist.

Daten im JSON-Objekt aktualisieren

Das Aktualisieren von Daten ist dem Zuweisen neuer Daten sehr ähnlich. Der einzige Unterschied besteht darin, dass Sie einen Schlüssel verwenden, der bereits in der Struktur des JSON-Objekts vorhanden ist:

json_object("name") = "Jane Doe"

Dadurch wird der Wert des Namensschlüssels von „John Doe“ durch „Jane Doe“ ersetzt.

Daten aus JSON-Objekt löschen

Das Löschen von Daten aus einem JSON-Objekt reicht nicht aus, um sie durch einen leeren Wert zu ersetzen. Stattdessen müssen Sie das spezifische Schlüssel-Wert-Paar entfernen. Die JSON-Bibliothek unterstützt das Schlüsselwort del, um ein Schlüssel-Wert-Paar zu löschen:

del json_object("city")

Seien Sie vorsichtig, wenn Sie diese Funktion verwenden, da gelöschte Daten nicht wiederhergestellt werden können.

Erweiterte JSON-Parsing-Techniken

In komplexeren Szenarien stoßen Sie möglicherweise auf erweiterte JSON-Parsing-Anforderungen. In diesem Abschnitt wird gezeigt, was über die Grundlagen hinausgeht und Ihnen den effektiven Umgang mit komplexen Datenstrukturen und einzigartigen Situationen ermöglicht.

Python Pretty Printing für JSON

Obwohl JSON-Daten einfach zu verarbeiten sind, kann das Lesen schwierig sein. Wenn Sie beispielsweise die gesamte Struktur eines komplexen JSON-Objekts in einer einzigen Zeile drucken, kann es schwierig sein, damit zu arbeiten.

Um diesem Problem zu begegnen, wurde das Konzept „Pretty JSON“ entwickelt. Pretty JSON ist eine Möglichkeit, JSON in einem besser lesbaren und ästhetisch ansprechenderen Format zu formatieren. Dies ist besonders nützlich, wenn Sie mit großen oder verschachtelten JSON-Daten arbeiten.


JSON zu Pretty JSON

Python bietet die Methode json.dumps() mit einem Einrückungsparameter an, mit dem Sie den Grad der Einrückung für verschachtelte Strukturen angeben können. Diese Funktion verbessert die Lesbarkeit der JSON-Ausgabe erheblich.

pretty_json = json.dumps(json_object, indent=4)

Es wird ein hübsches JSON mit einer Einrückung von 4 Leerzeichen gedruckt.

Arbeiten mit JSON-Daten aus externen Quellen

Bei Anwendungen werden häufig JSON-Daten aus externen Quellen wie Web-APIs oder Datenbanken abgerufen. Die Requests-Bibliothek stellt Anfragen in Python und unterstützt die Arbeit mit JSON-Antworten.

Fordern wir die Website httpbin.org an, die eine JSON-Antwort mit der IP-Adresse zurückgibt, von der aus die Anfrage gestellt wurde:

import requests

response = requests.get("https://httpbin.org/ip")

Jetzt können Sie JSON-Daten aus der Antwort analysieren:

json_data = response.json()

Als Ergebnis erhalten Sie ein JSON-Objekt und können problemlos auf dessen Inhalt zugreifen. Um beispielsweise Ihre IP-Adresse zu erhalten, müssen Sie den Wert des Schlüssels json_data(„origin“) abrufen.

Umgang mit doppelten Schlüsseln

Während die JSON-Spezifikation doppelte Schlüssel innerhalb eines Objekts nicht zulässt, entsprechen reale Daten nicht immer dieser Regel. Beim Umgang mit JSON-Daten, die doppelte Schlüssel enthalten, ist es wichtig zu wissen, wie man damit umgeht.

Das JSON-Modul von Python verarbeitet doppelte Schlüssel standardmäßig nicht ordnungsgemäß und löst möglicherweise Ausnahmen aus. Sie können jedoch benutzerdefinierte Lösungen implementieren, um dieses Problem zu beheben. Um Fehler zu vermeiden, können Sie beispielsweise die Option „streng“ nutzen:

Json_data = json.loads(json_string, strict=False)

Durch Setzen des strict-Parameters auf False bei der Verwendung von json.loads() ermöglicht es dem JSON-Parser, die Analyse fortzusetzen, selbst wenn er auf doppelte Schlüssel stößt. Das resultierende Python-Wörterbuch enthält das letzte Vorkommen jedes Schlüssel-Wert-Paares in den JSON-Daten.

Konvertieren Sie JSON in CSV in Python

CSV (Comma Separated Values) ist eines der beliebtesten Dateiformate zum Speichern tabellarischer Daten und wird von den meisten Betriebssystemen unterstützt. Im Gegensatz zu XSLX speichert eine CSV-Datei tabellarische Daten als Klartext, getrennt durch Kommas.

Um ein JSON-Objekt schnell in einer CSV-Datei in Python zu speichern, können Sie die CSV- oder Pandas-Bibliothek verwenden. Schauen wir uns beide Beispiele an. Installieren Sie zunächst die CSV- und Pandas-Bibliotheken:

pip install csv
pip install pandas

Jetzt importieren wir die CSV-Bibliothek in das Skript:

import csv

Um Daten in eine Datei zu schreiben, müssen wir die Datei öffnen und die Daten Zeile für Zeile eingeben:

with open('data.csv', 'w', newline="") as csvfile:

Legen Sie dann die Header fest und erstellen Sie ein CSV-Bibliotheksobjekt zum Schreiben der Daten:

    fieldnames = ('title', 'year', 'title', 'language')
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()

Und nehmen Sie diese Daten Zeile für Zeile:

    writer.writerow({
        'title': json_object('title'),
        'year': json_object('year'),
        'title': json_object('article')('title'),
        'language': json_object('article')('language')
    })

Als Ergebnis erhalten Sie die Tabelle:


JSON zu CSV oder Excel

Wenn Sie den Aufzeichnungsprozess vereinfachen möchten, können Sie die Datenrahmen der Pandas-Bibliothek verwenden. Importieren Sie die Bibliothek in das Skript:

import pandas as pd

Erstellen Sie dann einen Datenrahmen aus einem JSON-Objekt:

df = pd.DataFrame(json_data)

Und speichern Sie die Daten im CSV-Format:

df.to_csv("data.csv", index=False)

Wenn Sie Daten in einer XLSX-Datei speichern möchten, können Sie die to_excel-Methode des DataFrame verwenden. Geben Sie den gewünschten Dateinamen an und legen Sie index=False fest, um die Standardindexspalte auszuschließen:

df.to_excel("data.xlsx", index=False)

Dieser Code erstellt aus Ihrem JSON-Objekt eine vorgefertigte Excel-Datei, deren Spaltennamen den Schlüsselnamen in Ihren JSON-Daten entsprechen. Dies ist eine bequeme Möglichkeit, strukturierte Daten zur weiteren Analyse oder Weitergabe nach Excel zu exportieren.

Abschluss

In diesem Tutorial wurden verschiedene Aspekte der Arbeit mit JSON-Daten in Python behandelt. JSON oder JavaScript Object Notation ist ein allgegenwärtiges Format zum Austausch und Speichern von Daten. Das Verständnis der Struktur, Analyse und Serialisierung von JSON ist für Webentwickler, Datenwissenschaftler und alle, die mit Daten in Python arbeiten, von entscheidender Bedeutung.

Wir haben die Grundlagen von JSON behandelt, einschließlich der Analyse von Zeichenfolgen und JSON-Dateien. Darüber hinaus haben wir Methoden zum Ändern von JSON-Daten behandelt, einschließlich des Hinzufügens, Aktualisierens und Löschens von Schlüssel-Wert-Paaren. Wir haben auch fortgeschrittene JSON-Parsing-Methoden behandelt, wie etwa Pretty Printing für bessere Lesbarkeit, die Arbeit mit Daten aus externen Quellen, etwa Web-APIs, und den Umgang mit doppelten Schlüsseln.

Wenn Sie diese Fähigkeiten beherrschen, sind Sie gut auf die Arbeit mit JSON-Daten in Python vorbereitet, sei es beim Erstellen von Webanwendungen, beim Analysieren von Daten oder beim Arbeiten mit Daten aus verschiedenen Quellen.

Related Posts

Hinterlasse einen Kommentar