In diesem Leitfaden erfahren Sie Folgendes:
- Was Jupyter Notebooks sind
- Warum Sie Jupyter Notebooks für Web Scraping verwenden sollten
- Schritt-für-Schritt-Anleitung zur Verwendung
- Anwendungsfälle von Jupyter Notebooks für das Scraping von Online-Daten
Dann legen wir mal los!
Was sind Jupyter Notebooks?
Im Zusammenhang mit Jupyter ist ein Notebook „ein gemeinsam nutzbares Dokument, das Computercode, Beschreibungen in einfacher Sprache, Daten, Diagramme, Grafiken und Abbildungen sowie interaktive Steuerelemente kombiniert.“
Notebooks bieten interaktive Umgebungen für die Erstellung von Prototypen und die Erläuterung von Code, die Erkundung und Visualisierung von Daten und den Austausch von Ideen. Insbesondere werden Notebooks, die von der Jupyter Notebook App erstellt werden, Jupyter Notebooks genannt.
Die Jupyter Notebook App ist eine Server-Client-Anwendung, die die Bearbeitung und Ausführung von Notebook-Dokumenten über einen Webbrowser ermöglicht. Sie kann auf einem lokalen Desktop ausgeführt oder auf einem entfernten Server installiert werden.
Jupyter Notebooks bieten den sogenannten „Kernel“, eine „Rechenmaschine“, die den in einem Notebook-Dokument enthaltenen Code ausführt. Im Einzelnen führt der ipython
-Kernel Python-Code aus (es gibt aber auch Kernels in anderen Sprachen):
Die Jupyter Notebook App bietet ein Dashboard, das typische Operationen wie die Anzeige lokaler Dateien, das Öffnen vorhandener Notebook-Dokumente, die Verwaltung von Dokumentenkernel und mehr unterstützt:
Warum Jupyter Notebooks für Web Scraping verwenden?
Jupyter Notebooks sind speziell für die Datenanalyse sowie für F&E-Zwecke konzipiert und eignen sich aufgrund ihrer Eigenschaften gut für Web-Scraping-Zwecke:
- Interaktive Entwicklung: Schreiben und Ausführen von Code in kleinen, überschaubaren Abschnitten, die Zellen genannt werden. Jede Zelle kann unabhängig von den anderen arbeiten. Das garantiert ein vereinfachtes Testen und Debuggen.
- Organisation: Verwenden Sie Markdown in den Zellen, um den Code zu dokumentieren, die Logik zu erklären und Notizen oder Anweisungen hinzuzufügen.
- Integration mit Datenanalysetools: Nach dem Scrapen können Sie die Daten sofort in Python bereinigen, verarbeiten und analysieren, da Jupyter Notebooks in Bibliotheken wie
pandas
,matplotlib
,seaborn
und mehr integriert werden können. - Reproduzierbarkeit und Teilen: Jupyter Notebooks können als
.ipynb
-Dateien (das Standardformat) leicht mit anderen geteilt oder in andere Formate wie ReST, Markdown und mehr konvertiert werden.
Vor- und Nachteile
Dies sind die Vor- und Nachteile der Verwendung von Jupyter Notebooks für Daten-Scraping:
👍Vorteile:
- Schritt-für-Schritt-Debugging: Da jede Zelle unabhängig laufen kann, können Sie Ihren Datenextraktionscode in verschiedene Zellen unterteilen und diese ausführen. Auf diese Weise können Sie kleine Codeblöcke debuggen, indem Sie die Zellen ausführen und Fehler auf Zellenebene abfangen.
- Dokumentation: Verwenden Sie Markdown in Zellen, um Dateien zu erstellen, in denen Sie die Funktionsweise Ihres Scraping-Codes dokumentieren und die Logik hinter den getroffenen Entscheidungen beschreiben können.
- Flexibilität: In Jupyter Notebooks können Sie Web Scraping, Datenbereinigung und Analyse in einer einzigen Umgebung kombinieren. Dies ermöglicht den Wechsel zwischen verschiedenen Umgebungen, beispielsweise das Schreiben des Scraping-Skripts in eine IDE und die Analyse der Daten an anderer Stelle.
👎Nachteile:
- Nicht ideal für große Projekte: Jupyter Notebooks neigen dazu, lange Dokumente zu werden. Das macht sie nicht zur idealen Wahl für groß angelegte Daten-Scraping-Projekte.
- Leistungseinschränkungen: Notebooks neigen dazu, langsam zu werden oder nicht mehr zu reagieren, wenn sie mit großen Datensätzen arbeiten oder lange Skripte ausführen. Erfahren Sie mehr darüber, wie Sie Web Scraping schneller machen.
- Nicht ideal für die Automatisierung: Wenn Sie Ihren Scraper nach einem Zeitplan ausführen oder ihn als Teil eines größeren Systems einsetzen müssen, sind Jupyter Notebooks nicht die beste Wahl. Der Grund dafür ist, dass sie in erster Linie für die interaktive, manuelle Ausführung von Zellen konzipiert sind.
Wie man Jupyter Notebooks für Web Scraping verwendet: Schritt-für-Schritt-Anleitung
Jetzt wissen Sie, warum Sie Jupyter Notebooks für Web Scraping verwenden sollten. Jetzt können Sie sehen, wie Sie sie in einem realen Scraping-Szenario verwenden können!
Voraussetzungen
Um dieses Tutorial zu wiederholen, muss Ihr System die folgenden Voraussetzungen erfüllen:
- Python 3.6 oder höher: Jede Python-Version höher als 3.6 ist geeignet. Insbesondere werden wir die Abhängigkeiten über
pip
installieren, das bereits mit jeder Python-Version größer als 3.4 installiert wird.
Schritt 1: Einrichtung der Umgebung und Installation von Abhängigkeiten
Angenommen, Sie nennen den Hauptordner Ihres Projekts scraper/
. Am Ende dieses Schritts hat der Ordner die folgende Struktur:
scraper/
├── analysis.ipynb
└── venv/
Wo:
analysis.ipynb
ist das Jupyter Notebook, das den gesamten Code enthält.venv/
enthält die virtuelle Umgebung.
Sie können das Verzeichnis venv/
virtual environment wie folgt erstellen:
python -m venv venv
Zur Aktivierung unter Windows, führen Sie Folgendes aus:
venv\Scripts\activate
Entsprechend führen Sie unter macOS/Linux Folgendes aus:
source venv/bin/activate
Installieren Sie in der aktivierten virtuellen Umgebung alle für dieses Tutorial benötigten Bibliotheken:
pip install requests beautifulsoup4 pandas jupyter seaborn
Diese Bibliotheken dienen den folgenden Zwecken:
requests
: Zur Durchführung von HTTP-Requests.beautifulsoup4
: Zum Parsen von HTML- und XML-Dokumenten.pandas
: Eine leistungsstarke Bibliothek zur Datenmanipulation und -analyse, ideal für die Arbeit mit strukturierten Daten wie CSV-Dateien oder Tabellen.jupyter
: Eine webbasierte interaktive Entwicklungsumgebung zum Ausführen und Weitergeben von Python-Code, ideal für Analyse und Visualisierung.seaborn
: Eine Python-Bibliothek zur Datenvisualisierung basierend auf Matplotlib.
Um die Datei analysis.ipynb
zu erstellen, müssen Sie zunächst den Ordner scraper/
eingeben:
cd scraper
Dann initialisieren Sie ein neues Jupyter Notebook mit diesem Befehl:
jupyter notebook
Sie können jetzt auf Ihre Jupyter Notebook App über locahost8888
zugreifen.
Erstellen Sie eine neue Datei, indem Sie auf die Option „Neu > Python 3“ klicken:
Die neue Datei wird automatisch untitled.ipynb
genannt. Sie können sie im Dashboard umbenennen:
Großartig! Sie sind nun vollständig für das Web Scrpaing mit Jupyter Notebooks eingerichtet.
Schritt 2: Zielseite definieren
In diesem Tutorial werden Sie die Daten von der Website worldometer scrapen. Die Zielseite ist insbesondere die Seite mit den jährlichen CO2-Emissionen in den USA, die tabellarische Daten wie diese bereitstellt:
Schritt 3: Abrufen der Daten
Sie können die Daten von der Zielseite abrufen und wie folgt in einer CSV-Datei speichern:
import requests
from bs4 import BeautifulSoup
import csv
# URL of the website
url = "https://www.worldometers.info/co2-emissions/us-co2-emissions/"
# Send a GET request to the website
response = requests.get(url)
response.raise_for_status()
# Parse the HTML content
soup = BeautifulSoup(response.text, "html.parser")
# Locate the table
table = soup.find("table")
# Extract table headers
headers = [header.text.strip() for header in table.find_all("th")]
# Extract table rows
rows = []
for row in table.find_all("tr")[1:]: # Skip the header row
cells = row.find_all("td")
row_data = [cell.text.strip() for cell in cells]
rows.append(row_data)
# Save the data to a CSV file
csv_file = "emissions.csv"
with open(csv_file, mode="w", newline="", encoding="utf-8") as file:
writer = csv.writer(file)
writer.writerow(headers) # Write headers
writer.writerows(rows) # Write rows
print(f"Data has been saved to {csv_file}")
Dieser Code funktioniert folgendermaßen:
- Es verwendet die
requests
.Bibliothek, um eine GET-Request an die Zielseite über dierequests.get()
-Methode zu senden und prüft auf Request-Fehler über die Methoderesponse.raise_for_status()
. - Es verwendet
BeautifulSoup
, um den HTML-Inhalt zu parsen, indem die KlasseBeautifulSoup()
instanziiert wird und der Selektortable (Tabelle)
mit der Methodesoup.find()
gefunden wird. Diese Methode ist insbesondere nützlich, um die Tabelle zu finden, die die Daten enthält. Wenn Sie mit dieser Syntax nicht vertraut sind, lesen Sie unsere Anleitung zu BeautifulSoup Web Scraping. - Sie verwendet ein Listenverständnis, um die Kopfzeile der Tabelle zu extrahieren.
- Es verwendet eine
for
-Schleife, um alle Daten aus der Tabelle abzurufen, wobei die Kopfzeile übersprungen wird. - Schließlich wird eine neue CVS-Datei geöffnet, an die alle abgerufenen Daten angehängt werden.
Sie können diesen Code in eine Zelle einfügen und ihn durch Drücken von UMSCHALT+EINGABE
ausführen.
Eine andere Möglichkeit, die Zelle auszuführen, besteht darin, sie zu markieren und die Schaltfläche „Ausführen“ im Dashboard zu drücken:
Erstaunlich, wie die Meldung „Daten wurden in emissions.csv gespeichert“ Sie über die erfolgreiche Datenextraktion informiert.
Schritt 4: Sicherstellen, dass die Daten korrekt sind
Nun haben Sie die Daten in einer CVS-Datei gespeichert. Öffnen Sie die CSV-Datei und sehen Sie nach, ob alles gut gelaufen ist – manchmal gibt es Probleme bei der Konvertierung. Dazu können Sie den folgenden Code in eine neue Zelle eingeben:
import pandas as pd
# Load the CSV file into a pandas DataFrame
csv_file = "emissions.csv"
df = pd.read_csv(csv_file)
# Print the DataFrame
df.head()
Dieser Code bewirkt Folgendes:
- Öffnet die CSV-Datei als Datenrahmen, dank
pandas
, mit der Methodepd.read_csv()
. - Druckt die ersten fünf Zeilen des Datenrahmens mit der Methode
df.head()
.
Hier ist das erwartete Ergebnis:
Ausgezeichnet! Es müssen nur noch die extrahierten Daten dargestellt werden.
Schritt 5: Visualisierung der Daten
Jetzt können Sie jede beliebige Datenanalyse durchführen. Sie können zum Beispiel seaborn
verwenden, um ein Liniendiagramm zu erstellen, das den Trend der C02-Emissionen im Laufe der Jahre zeigt. Gehen Sie dabei wie folgt vor:
import seaborn as sns
import matplotlib.pyplot as plt
# Load the CSV file into a pandas DataFrame
csv_file = "emissions.csv"
df = pd.read_csv(csv_file)
# Clean column names be removing extra spaces
df.columns = df.columns.str.strip().str.replace(' ', ' ')
# Convert 'Fossil CO2 Emissions (tons)' to numeric
df['Fossil CO2 Emissions (tons)'] = df['Fossil CO2 Emissions (tons)'].str.replace(',', '').astype(float)
# Ensure the 'Year' column is numeric
df['Year'] = pd.to_numeric(df['Year'], errors='coerce')
df = df.sort_values(by='Year')
# Create the line plot
plt.figure(figsize=(10, 6))
sns.lineplot(data=df, x='Year', y='Fossil CO2 Emissions (tons)', marker='o')
# Add labels and title
plt.title('Trend of Fossil CO2 Emissions Over the Years', fontsize=16)
plt.xlabel('Year', fontsize=12)
plt.ylabel('Fossil CO2 Emissions (tons)', fontsize=12)
plt.grid(True)
plt.show()
Dieser Code funktioniert folgendermaßen:
- Er verwendet
pandas
für Folgendes:- Öffnen der CSV-Datei.
- Bereinigen Sie die Spaltennamen durch Entfernen zusätzlicher Leerzeichen mit der Methode
df.columns.str.strip().str.replace(' ', ' ')
(wenn Sie dies nicht verwenden, erhalten Sie in diesem Beispiel Fehler in Ihrem Code). - Greift auf die Spalte „Fossil CO2 Emissions (tons) (Fossile CO2-Emissionen (Tonnen))“ zu und konvertiert Daten in Zahlen mit der Methode
df['Fossil CO2 Emissions (tons)'].str.replace(',', '').astype(float)
. - Greift auf die Spalte „Jahre (Years)“ zu, wandelt die Werte mit der Methode
pd.to_numeric()
in Zahlen um, und sortiert die Werte in aufsteigender Reihenfolge mit der Methodedf.sort_values()
.
- Es verwendet die Bibliotheken
matplotlib
undseaborn
(die aufmatplotlib
aufgebaut ist, sodass sie installiert wird, wenn Sieseaborn
installieren), um den eigentlichen Plot zu erstellen.
Hier ist das erwartete Ergebnis:
Beeindruckend! So leistungsfähig ist das Jupyter Notebook Scraping.
Schritt Nr. 6: Das Ganze zusammensetzen
So sieht das endgültige Jupyter Notebook Web-Scraping-Dokument aus:
Beachten Sie das Vorhandensein von verschiedenen Blöcken, jeder mit seinem Output.
Anwendungsfälle von Jupyter Notebook Web Scraping
Zeit, Anwendungsfälle für den Einsatz von Jupyter Notebooks beim Web Scraping zu diskutieren!
Tutorials
Vergessen Sie nicht, dass jede Zelle in einem Jupyter Notebook unabhängig ausgeführt werden kann. Mit der zusätzlichen Unterstützung für Markdown wird die Bibliothek zu einem hervorragenden Tool für die Erstellung von Schritt-für-Schritt-Anleitungen.
Sie können z. B. zwischen Zellen mit Code und solchen, die die Logik und Argumentation dahinter erklären, abwechseln. Beim Web Scraping sind Jupyter Notebooks besonders nützlich. Sie können verwendet werden, um Tutorials für Nachwuchsentwickler zu erstellen, die sie durch jeden Schritt des Prozesses führen.
Wissenschaft und Forschung (F&E)
Aufgrund ihres interaktiven Charakters und der Möglichkeit, sie für die Zusammenarbeit zu exportieren, sind Jupyter Notebooks ideal für Forschung und Entwicklung. Dies gilt insbesondere für Web Scraping. Wenn Sie z. B. Websites scrapen, die mehrere Runden des Testens erfordern, können Sie alle Tests in einem einzigen Notebook speichern und Markdown verwenden, um die erfolgreichen Tests zu markieren.
Datenexploration
Die Jupyter-Bibliothek wurde speziell für die Datenexploration und -analyse entwickelt. Das macht sie auch zu einem perfekten Tool für Web Scraping für maschinelles Lernen.
Dieser Anwendungsfall bezieht sich direkt auf das Beispiel, das Sie oben kodiert haben. Sie haben die Daten von der Website abgerufen und sofort analysiert, alles in derselben Programmierumgebung.
Fazit
In diesem Beitrag haben Sie erfahren, wie Jupyter Notebooks ein leistungsstarkes Tool für Web Scraping sein können, das eine interaktive und flexible Umgebung für die Datenextraktion und -analyse bietet. Wenn es jedoch darum geht, Ihre Web-Scraping-Aktivitäten zu skalieren oder Aufgaben zu automatisieren, sind Jupyter Notebooks möglicherweise nicht die effizienteste Lösung.
Hier kommen unsere Web Scraper ins Spiel. Ganz gleich, ob Sie als Entwickler nach API-basierten Lösungen oder nach einer Option ohne Code suchen, unsere Web Scraper sind so konzipiert, dass sie Ihre Datenerhebung vereinfachen und verbessern. Mit Funktionen wie dedizierten Endpunkten für mehr als 100 Domains, Massenanfrageverarbeitung, automatischer IP-Rotation und CAPTCHA-Auflösungkönnen strukturierte Daten mühelos und in großem Umfang extrahieren. Erstellen Sie noch heute ein kostenloses Bright Data-Konto, um unsere Scraping-Lösungen und unsere Proxys zu testen!
Keine Kreditkarte erforderlich