1. Vorbereitung der Daten zum Speichern
In den vorherigen Vorlesungen haben wir bereits gelernt, Daten aus Webseiten mit der Bibliothek BeautifulSoup zu extrahieren. Jetzt ist es an der Zeit, unsere Scraping-Ergebnisse in etwas Nützliches und Praktisches für die Analyse zu verwandeln. Denn wenn die Daten nur in deinem Skript bleiben, bringen sie wenig Nutzen. Heute lernen wir, wie man Daten in den Formaten CSV und Excel speichert, denn, wie man weiß, im Leben eines Programmierers, wie auch im Leben einer Katze, ist das Wichtigste — zu finden, was zu essen ist... äh, ich meine, zu speichern.
Bevor wir beginnen, unsere Daten in lustige Tabellen zu verwandeln, lassen wir uns kurz anhalten und betrachten, wie wir unsere Daten für den Export vorbereiten. Normalerweise werden die Daten, die wir aus Webseiten extrahieren, in Form von Listen oder Dictionaries dargestellt. Man sollte sie so formatieren, dass sie bereit für den Export in ein tabellarisches Format sind.
Beispieldaten
Nehmen wir an, du hast die folgenden Daten über Bücher gesammelt:
books = [
{"title": "Harry Potter und der Stein der Weisen", "author": "J. K. Rowling", "price": "350.00"},
{"title": "Der Herr der Ringe", "author": "J. R. R. Tolkien", "price": "500.00"},
{"title": "Der Meister und Margarita", "author": "M. A. Bulgakow", "price": "450.00"}
]
2. Speicherung im CSV-Format
CSV (Comma-Separated Values) — ist ein einfaches Textformat, das tabellarische Daten speichert. Jede Zeile in CSV stellt einen Datensatz dar, und jede Spalte wird durch Kommata getrennt. Lassen wir uns lernen, wie man unsere Daten in diesem Format speichert.
Verwendung der csv-Bibliothek
Python stellt uns ein praktisches Modul csv zur Verfügung, das das Arbeiten mit CSV-Dateien erheblich einfacher macht. Hier ist, wie du unsere Buchdaten in CSV exportieren kannst:
import csv
with open('books.csv', mode='w', newline='', encoding='utf-8') as file:
writer = csv.DictWriter(file, fieldnames=["title", "author", "price"])
writer.writeheader()
writer.writerows(books)
print("Daten wurden erfolgreich in books.csv gespeichert")
Wichtig: Gib immer newline='' beim Öffnen einer Datei im Modus w an, um zusätzliche Leerzeilen in Windows zu vermeiden.
Daten aus CSV lesen
Der Vollständigkeit halber sehen wir uns an, wie man Daten aus CSV wieder einliest:
with open('books.csv', mode='r', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
print(row)
3. Speicherung im Excel-Format
Für die Arbeit mit Excel in Python verwenden wir die Bibliothek pandas. Pandas ermöglicht es uns, unsere Daten leicht in ein DataFrame zu konvertieren und sie in verschiedene Formate, einschließlich Excel, zu exportieren.
Installation von pandas
Wenn du pandas noch nicht installiert hast, kannst du dies mit pip tun:
pip install pandas openpyxl
Verwendung von pandas zum Exportieren nach Excel
Speichern wir nun unsere Buchdaten in Excel:
import pandas as pd
df = pd.DataFrame(books)
df.to_excel('books.xlsx', index=False, engine='openpyxl')
print("Daten wurden erfolgreich in books.xlsx gespeichert")
Daten aus Excel lesen
Nicht nur das Erstellen, sondern auch die Wiederverwendung erstellter Dateien bereitet Freude! Lassen wir uns lernen, Daten aus Excel zu lesen:
df = pd.read_excel('books.xlsx')
print(df)
4. Fehler und deren Behandlung
Wie in jedem anderen Aspekt der Programmierung können beim Exportieren von Daten Fehler auftreten. Die häufigsten Probleme sind falsche Dateipfade oder das Fehlen benötigter Bibliotheken. Zum Beispiel, wenn man vergisst, openpyxl zu installieren, wird der Export nach Excel scheitern.
Überprüfung der Datei-Existenz
Bevor du versuchst, eine Datei zu schreiben oder zu lesen, ist es nützlich, deren Existenz zu überprüfen. Dies kannst du mit dem Modul os tun:
import os
if os.path.exists('books.csv'):
print("Datei books.csv existiert")
else:
print("Datei books.csv nicht gefunden")
Du wirst es kaum glauben, aber der häufigste Fehler von Anfängern ist das versehentliche Überschreiben alter Daten mit neuen. Die Automatisierung der Datei-Historie-Speicherung ist eine wahre Kunst.
Vergiss auch nicht, Fehler mit try-except-Konstruktionen zu behandeln, damit dein Skript nicht beim ersten Problem abstürzt.
GO TO FULL VERSION