Web Scraping ist ein notwendiges Mittel, um Informationen aus Webseiten zu extrahieren. BeautifulSoup ist ein effektives und recht benutzerfreundliches Python-Paket, das das Sammeln von Daten für Recherchen, Analysen und die Automatisierung sich wiederholender Aufgaben im Allgemeinen erleichtert. Die Schritte zur Verwendung von BeautifulSoup zum Scrapen von Daten aus dem Web werden in diesem Blog erläutert.
BeautifulSoup wird weltweit aktiv und häufig für die Konvertierung von XML- und HTML-Seiten in Python-Objekte verwendet. Programmieranfänger können es problemlos verwenden, da das Paket über eine einfache Schnittstelle zum Auffinden und Erfassen der erforderlichen Dimensionen verfügt.
Sie sind neu beim Web Scraping und Python oder möchten Ihre Kenntnisse auffrischen? Nach der Lektüre dieses Blogs wissen Sie, wie Sie mit BeautifulSoup arbeiten.
Inhaltsverzeichnis
- Erforderliche Bibliotheken installieren
- Erstellen Ihres Projekts
- Was ist der DOM?
- Wie BeautifulSoup mit HTML interagiert
- HTML parsen
- Extrahieren von Daten mit
find()
undfind_all()
- Navigieren durch Tags und Attribute
- Schritt-für-Schritt-Skriptbeispiel
- Daten von einer Website scrapen
- Fehler behandeln
- Dynamische Inhalte verwalten
- Umgang mit Paginierung
- Vermeiden, blockiert zu werden
- Einhaltung der Website-Nutzungsbedingungen
- Vermeidung einer Serverüberlastung
Warum BeautifulSoup verwenden?
BeautifulSoup ist aufgrund seiner Einfachheit und Wirksamkeit eine der bekanntesten Python-Bibliotheken für Web Scraping in Python. Sie können damit Informationen von Websites mithilfe von HTML- und XML-Dokumenten extrahieren.
![Bild mit Gründen für die Verwendung von BeautifulSoup Bild mit Gründen für die Verwendung von BeautifulSoup](https://crawlbase.com/blog/how-to-use-beautifulsoup-in-python/why-use-beautifulsoup.jpg)
Einfach zu bedienen
BeautifulSoup ist einfach zu verwenden und Sie können Websites mit nur wenigen Codezeilen scrapen, perfekt für Anfänger.
Flexibles Parsen
Es unterstützt mehrere Parser wie den Standard-Python-HTML-Parser, lxml und html5lib und kann daher an jede Webstruktur angepasst werden.
Effiziente Suche und Navigation
BeautifulSoup ermöglicht Ihnen die Suche und Navigation durch HTML-Elemente. Mit find() und find_all() können Sie Daten wie Text, Links oder Bilder extrahieren.
Community Support
Große Community, daher finden Sie viele Tutorials und Antworten auf häufig gestellte Fragen.
Funktioniert mit anderen Bibliotheken
BeautifulSoup kann problemlos mit Selenium für dynamische Inhalte und Anfragen zum Abrufen von Websites verwendet werden.
Kurz gesagt, BeautifulSoup ist ein zuverlässiges, flexibles und benutzerfreundliches Tool für Web Scraping, das sowohl für Anfänger als auch für Experten geeignet ist.
Einrichten Ihrer Umgebung
Bevor Sie mit BeautifulSoup beginnen, Websites zu scrapen, müssen Sie Ihre Entwicklungsumgebung einrichten. Dazu müssen Sie die erforderlichen Bibliotheken installieren und ein Projektverzeichnis für Ihre Skripte erstellen.
Erforderliche Bibliotheken installieren
Sie benötigen zwei Hauptbibliotheken: Requests und BeautifulSoup4.
- Produktanfragen zum Abrufen von Webseiten.
- SchöneSoup4 zum Parsen des HTML-Inhalts der Webseite.
Führen Sie die folgenden Befehle in Ihrem Terminal oder Ihrer Eingabeaufforderung aus, um diese Bibliotheken zu installieren:
1 | Pip Installationsanforderungen |
Diese ermöglichen Ihnen, HTTP-Anfragen an Websites zu senden und den HTML-Inhalt zur Datenextraktion zu analysieren.
Erstellen Ihres Projekts
Nachdem Sie nun die Bibliotheken installiert haben, ist es an der Zeit, Ihr Projekt einzurichten. Erstellen Sie ein neues Verzeichnis, in dem Sie Ihre Python-Skripte ablegen. Erstellen Sie beispielsweise einen Ordner mit dem Namen „beautifulsoup_scraping“:
1 | mkdir wunderschönesuppe_scraping |
So bleibt Ihr Web Scraping-Projekt übersichtlich und einsatzbereit. Jetzt können Sie mit BeautifulSoup mit dem Scraping beginnen.
HTML und DOM verstehen
Bevor Sie mit BeautifulSoup mit dem Web Scraping beginnen, müssen Sie die Struktur von Webseiten verstehen. Webseiten werden mit HTML (Hypertext Markup Language) erstellt und mit CSS gestaltet. Das DOM (Document Object Model) ist die Struktur einer Webseite als Objektbaum, der die Navigation und das Extrahieren von Informationen erleichtert.
Was ist der DOM?
Der DOM ist ein Baum eines HTML-Dokuments. Er verschachtelt den Inhalt. Jeder Knoten im Baum ist ein Element, das ein Tag sein kann (wie <p>
, <div>
, <a>
) oder Inhalt (Text innerhalb dieser Tags). Die DOM-Struktur wird von Web Scraping Tools wie BeautifulSoup verwendet, um Daten aus einer Webseite zu extrahieren.
In einem einfachen HTML-Dokument könnte beispielsweise Folgendes enthalten sein:
1 | <html> |
In diesem Fall hätte das DOM Knoten für die <html>
, <body>
, <h1>
, <p>
und <a>
Elemente, die jeweils den entsprechenden Inhalt enthalten.
Wie BeautifulSoup mit HTML interagiert
BeautifulSoup verwendet das DOM, um das HTML zu analysieren und einen Baum aus Python-Objekten zu erstellen. So können Sie durch die Struktur navigieren und die benötigten Daten abrufen. BeautifulSoup wählt automatisch den besten auf Ihrem System verfügbaren Parser aus, sodass Sie sofort loslegen können.
Wenn Sie HTML in BeautifulSoup laden, wird es zu einem Objektbaum. Anschließend können Sie verschiedene Methoden verwenden, um Elemente oder Tags zu finden, Inhalte zu extrahieren und die Daten zu bearbeiten.
Zum Beispiel, um alle zu finden
Tags (Absätze) im Dokument können Sie verwenden:
1 | Suppe.find_all('P') |
Dadurch können Sie sich auf bestimmte Teile der Webseite konzentrieren, sodass das Scraping effizienter und gezielter wird.
Wenn Sie HTML und DOM kennen, können Sie besser durch Webseiten navigieren und nur das scrapen, was Sie brauchen.
Verwenden von BeautifulSoup für Web Scraping
Nachdem Sie nun über grundlegende Kenntnisse zu HTML und DOM verfügen, können Sie mit BeautifulSoup mit dem Scraping von Daten beginnen. BeautifulSoup erleichtert das Extrahieren von Informationen aus Webseiten, indem HTML- oder XML-Dokumente analysiert und in Python-Objekte umgewandelt werden.
HTML parsen
Zuerst müssen Sie den Inhalt der Webseite laden. Sie können Anfragen verwenden, um das HTML einer Webseite abzurufen. Sobald Sie das HTML haben, übernimmt BeautifulSoup die Arbeit und analysiert es für Sie.
So können Sie HTML mit BeautifulSoup laden und analysieren:
1 | für bs4 importieren BeautifulSuppe |
Anschließend können Sie mit der Navigation beginnen und mithilfe der leistungsstarken Funktionen von BeautifulSoup Daten von der Seite extrahieren.
Extrahieren von Daten mit find()
und find_all()
BeautifulSoup bietet mehrere Methoden zum Suchen und Extrahieren von Elementen auf der Seite. Die beiden am häufigsten verwendeten Methoden sind find()
und find_all()
.
find()
: Diese Methode durchsucht das Dokument und gibt die erste Übereinstimmung zurück, die den Suchkriterien entspricht. Dies ist nützlich, wenn Sie wissen, dass Sie nur ein Element extrahieren möchten.
1 | Titel = Suppe.find('h1') # Findet den ersten Etikett |
find_all()
: Diese Methode gibt alle übereinstimmenden Elemente als Liste zurück. Dies ist nützlich, wenn Sie mehrere Elemente extrahieren möchten, z. B. alle Links oder alle Absätze auf einer Seite.
1 | Absätze = soup.find_all('P') # Findet alle Schlagworte |
Bei beiden Methoden können Sie die Suche auch über Attribute eingrenzen. So können Sie beispielsweise innerhalb eines Tags nach einer bestimmten Klasse oder ID suchen.
1 | # Eine bestimmte Klasse finden |
Navigieren durch Tags und Attribute
Mit BeautifulSoup können Sie nicht nur nach Tags suchen, sondern auch durch sie navigieren und auf bestimmte Attribute zugreifen. Jedes HTML-Element verfügt über Attribute, die zusätzliche Informationen liefern, wie z. B. href
für Links, src
für Bilder und alt
für Bildbeschreibungen.
Um auf ein Attribut zuzugreifen, verwenden Sie das ['attribute_name']
Syntax. Beispiel:
1 | # Holen Sie sich das href-Attribut des ersten Links |
Sie können auch verschachtelte Suchen verwenden, um Tags innerhalb anderer Tags zu finden. Dies ist nützlich, wenn Sie in Container wie Divs oder Listen gelangen müssen.
1 | # Alle finden Tags innerhalb eines bestimmten |
Mit diesen Tools können Sie Daten von jeder Webseite abrufen und bearbeiten. Die Flexibilität und Einfachheit von BeautifulSoup machen es perfekt für Web Scraping.
5. Erstellen Sie Ihr erstes Web Scraping-Skript
Nachdem Sie nun wissen, wie Sie BeautifulSoup zum Parsen und Abrufen von Daten verwenden, können wir es in die Praxis umsetzen. In diesem Abschnitt erstellen wir Schritt für Schritt ein vollständiges Web Scraping-Skript.
Schritt-für-Schritt-Skriptbeispiel
Lassen Sie uns den Prozess der Erstellung eines einfachen Web-Scraping-Skripts zum Abrufen von Daten von einer Webseite durchgehen.
- Bibliotheken importieren: Sie müssen importieren
requests
um die Webseite abzurufen und BeautifulSoup, um ihr HTML zu analysieren. - Zur Webseite: Benutzen
requests
um die HTTP-GET-Anfrage an die Website zu erhalten. - Analysieren Sie das HTML: Benutzen
BeautifulSoup
um das HTML zu analysieren. - Gewünschte Daten extrahieren: Benutzen
find()
orfind_all()
um Text, Links oder Bilder zu extrahieren.
Hier ist ein vollständiges Beispiel:
1 | importieren Zugriffe |
Daten von einer Website scrapen
Schauen wir uns das obige Skript an:
- Ziel-URL: Wir verwenden
http://quotes.toscrape.com
, das einige Beispieldaten zum Scrapen enthält. - Seite abrufen:
requests.get()
ruft das HTML der Seite ab. Wir haben den Antwortcode überprüft, um festzustellen, ob die Anforderung erfolgreich war. - Parsen mit BeautifulSoup: BeautifulSoup analysiert den HTML-Text in einen Analysebaum.
- Daten extrahieren:
find_all()
findet alle<span>
Tags mit Klassentext, um die Anführungszeichen zu erhalten.find_all()
findet alle<small>
Tags mit der Klasseauthor
um die Namen der Autoren zu erfahren.
- Drucken Sie die Ergebnisse: Das
for
Die Schleife durchläuft die Zitate und Autoren und druckt sie aus.
Ausführen des Skripts
Speichern Sie das Skript unter scraper.py
und mit dem folgenden Befehl ausführen:
1 | Python Scraper.py |
Erwartete Ausgabe:
1 | Zitat: „Die Welt, wie wir sie geschaffen haben, ist ein Prozess unseres Denkens. Sie kann nicht verändert werden, ohne unser Denken zu ändern.“ |
Dieses Skript ist ein guter Ausgangspunkt für jedes BeautifulSoup-Web-Scraping-Projekt. Von hier aus können Sie weitere Funktionen hinzufügen, z. B. die Seitennummerierung verwalten, die Daten in einer Datei speichern oder komplexere Websites scrapen.
Wenn Sie dies befolgen, können Sie mit BeautifulSoup und Python Daten aus jeder Webseite extrahieren.
Umgang mit häufigen Problemen beim Web Scraping
Beim Web Scraping kann es zu Problemen kommen. Websites funktionieren möglicherweise nicht richtig; Seiten werden möglicherweise mithilfe von JavaScript geladen; Daten befinden sich möglicherweise auf anderen Seiten. In diesem Abschnitt erfahren Sie, wie Sie diese Probleme mithilfe von BeautifulSoup und anderen Tools beheben können.
1. Umgang mit Fehlern
Beim Web Scraping treten häufig Fehler auf, die jedoch behoben werden können:
- HTTP-Fehler: Jedes Mal, wenn eine Seite aufgrund eines Fehlers nicht zugänglich ist, wird ein HTTP-Statuscode wie 404 (Nicht gefunden) oder 500 (Serverfehler) zurückgegeben. Das Skript sollte Fehlervermeidungstechniken verwenden, um keinen anderen Statuscode als 200 als Problem anzuzeigen.
Beispiel:
1 | Antwort = Anfragen.get(„http://example.com“) |
- Fehlende Elemente: Manchmal sind die Elemente, die Sie extrahieren möchten, auf der Seite nicht vorhanden. Daher ist es gut, eine Bedingung festzulegen, um zu prüfen, ob diese Elemente in der Ausgabe fehlen, bevor Daten extrahiert werden.
Beispiel:
1 | Element = Suppe.find('div', Klasse_='Daten') |
2. Dynamische Inhalte verwalten
Einige Websites laden Inhalte per JavaScript, nachdem die Seite geladen wurde. In diesem Fall enthält das statische HTML, das Sie scrapen, möglicherweise nicht die gewünschten Daten.
Lösung: Verwenden Sie die Selen or Dramatiker da es sich um Browser-Automatisierungstools handelt, die dynamische Inhalte laden können.
Beispiel mit Selenium:
1 | für Selen importieren Webdriver |
Dies ermöglicht Ihnen die Interaktion mit dynamischen Seiten wie ein normaler Benutzer.
3. Handhabung der Seitennummerierung
Websites verteilen Daten auf mehrere Seiten, beispielsweise Blogbeiträge oder Produktlisten. Um den gesamten Inhalt einer Website zu extrahieren, müssen Sie die Seitennummerierung vornehmen, indem Sie jede Seite einzeln durchgehen.
Lösung: Suchen Sie nach dem Link zur nächsten Seite und durchlaufen Sie ihn, bis Sie das Ende erreichen.
Beispiel:
1 | importieren Zugriffe |
In diesem Skript:
- Die
while
Eine Schleife durchläuft jede Seite und extrahiert die Zitate. - Die
next
Link wird dynamisch erkannt und an die Basis-URL angehängt.
4. Blockierungen vermeiden
Wenn Sie eine Site zu aggressiv scrapen, werden Sie blockiert. So können Sie das vermeiden:
- Verzögerungen hinzufügen: Benutzen
time.sleep()
um zwischen Anfragen eine Pause einzulegen. - Benutzeragenten rotieren: Senden Sie Anfragen mit unterschiedlichen User-Agent-Headern, um echte Browser zu simulieren.
- Verwenden Sie Proxys: Leiten Sie Anfragen über mehrere IP-Adressen mithilfe von Proxy-Servern weiter. Crawlbase hat auch eine Smart Proxy Service, der superschnell, einfach zu integrieren und mit einem Pay-as-you-go-Preismodell erschwinglich ist.
Indem Sie diese häufigen Web Scraping-Herausforderungen angehen, machen Sie Ihre BeautifulSoup-Skripte robuster und zuverlässiger. Ob es um die Behandlung von Fehlern, die Verwaltung dynamischer Inhalte oder die Vermeidung von Ratenbegrenzungen geht – mit diesen Tipps laufen Ihre Scraping-Projekte reibungslos.
Ethische Web-Scraping-Praktiken
Web Scraping sollte verantwortungsbewusst durchgeführt werden, damit Sie Websites und deren Server nicht schädigen. Hier sind die ethischen Praktiken, die Sie befolgen sollten:
1. Einhaltung der Website-Nutzungsbedingungen
Überprüfen Sie immer die Allgemeinen Geschäftsbedingungen oder die robots.txt-Datei, bevor Sie eine Site scrapen. Diese Datei sagt Ihnen, was gescrapt werden kann und was nicht.
- Überprüfen Sie robots.txt: Es definiert, welcher Teil der Site gecrawlt werden kann.
- Um Erlaubnis bitten: Wenn Sie sich nicht sicher sind, fragen Sie den Websitebesitzer um Erlaubnis zum Scraping.
2. Vermeidung einer Serverüberlastung
Wenn zu viele Anfragen zu schnell gesendet werden, wird ein Server überlastet. Dies wirkt sich auf die Website-Leistung und das Benutzererlebnis aus.
- Ratenbegrenzung: Verwenden Sie Verzögerungen zwischen den Anfragen, um eine Überlastung des Servers zu vermeiden.
- Beachten Sie die API-Grenzen: Wenn eine Website über eine API verfügt, verwenden Sie diese, anstatt die Site direkt zu scrapen.
Beispiel:
1 | importieren Zeit |
Wenn Sie diese Vorgehensweisen befolgen, sind Sie ein verantwortungsvoller Web Scraper.
Abschließende Überlegungen
BeautifulSoup eignet sich hervorragend für Web Scraping. Sie können problemlos Daten aus HTML- und XML-Dokumenten extrahieren. Egal, ob Sie für Analysen, Recherchen oder andere Projekte scrapen, es ist ein einfaches, aber effektives Mittel zur Interaktion mit Webinhalten.
Beim Scraping müssen die Website-Regeln eingehalten werden und der Server darf nicht überlastet werden. Wenn Sie lernen, BeautifulSoup verantwortungsvoll und angemessen zu verwenden, können Sie effiziente und ethische Web-Scraping-Skripte erstellen.
Mit etwas Übung können Sie fortgeschrittenere Techniken erlernen, um Ihre Web Scraping-Projekte zu verbessern. Überprüfen Sie immer die Bedingungen der Website, gehen Sie richtig mit Daten um und achten Sie auf die Leistung, um das Beste aus Ihrem Web Scraping-Erlebnis herauszuholen.
Häufig gestellte Fragen
F: Was ist Web Scraping mit BeautifulSoup?
Beim Web Scraping mit BeautifulSoup wird die BeautifulSoup Python-Bibliothek verwendet, um Informationen aus dem Web zu sammeln. Sie unterstützt beim Parsen von XML- oder HTML-Dokumenten und ermöglicht es den Benutzern, sich durch die Inhalte zu bewegen, um die benötigten Informationen wie Text, Bilder oder Links zu finden und abzurufen.
F: Ist Web Scraping legal?
Web Scraping ist in den meisten Fällen legal, hängt aber von der Website und der Art und Weise ab, wie Sie die Daten verwenden. Lesen Sie immer die Nutzungsbedingungen der Website und die Datei robots.txt, um sicherzustellen, dass Sie keine Regeln verletzen. Scraping sollte niemals auf eine Weise erfolgen, die die Privatsphäre verletzt oder den Server überlastet.
F: Wie gehe ich beim Scraping mit dynamischen Inhalten um?
Dynamischer Inhalt wird von JavaScript geladen und ist daher mit BeautifulSoup schwer zu scrapen. Um dynamischen Inhalt zu scrapen, müssen Sie möglicherweise zusätzliche Tools wie Selenium oder Puppeteer verwenden, die Browseraktionen simulieren und JavaScript laden, bevor der Inhalt gescrapt wird.