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

  1. Warum BeautifulSoup verwenden?
  2. Einrichten Ihrer Umgebung
  • Erforderliche Bibliotheken installieren
  • Erstellen Ihres Projekts
  1. HTML und DOM verstehen
  • Was ist der DOM?
  • Wie BeautifulSoup mit HTML interagiert
  1. Verwenden von BeautifulSoup für Web Scraping
  • HTML parsen
  • Extrahieren von Daten mit find() und find_all()
  • Navigieren durch Tags und Attribute
  1. Erstellen Ihres ersten Web Scraping-Skripts
  • Schritt-für-Schritt-Skriptbeispiel
  • Daten von einer Website scrapen
  1. Umgang mit häufigen Problemen beim Web Scraping
  • Fehler behandeln
  • Dynamische Inhalte verwalten
  • Umgang mit Paginierung
  • Vermeiden, blockiert zu werden
  1. Ethische Web-Scraping-Praktiken
  • Einhaltung der Website-Nutzungsbedingungen
  • Vermeidung einer Serverüberlastung
  1. Abschließende Überlegungen
  2. Häufig gestellte Fragen

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

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.

  1. Produktanfragen zum Abrufen von Webseiten.
  2. 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
2
Pip Installationsanforderungen
pip install beautifulsoup4

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
2
mkdir wunderschönesuppe_scraping
cd 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
2
3
4
5
6
7
<html>
<Körper>
<h1>Willkommen auf meiner Website</h1>
<p>Dies ist ein Textabschnitt.</p>
<a href="https://beispiel.com">Hier tippen</a>
</Körper>
</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
2
3
4
5
6
7
8
9
für bs4 importieren BeautifulSuppe
importieren Zugriffe

# Seite abrufen
URL = „https://example.com“
Antwort = Anfragen.get(URL)

# Den HTML-Inhalt analysieren
Suppe = Schöne Suppe(Antwort.Text, 'html.parser')

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
2
Titel = Suppe.find('h1')  # Findet den ersten Etikett
drucken(Titel.Text)
  • 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
2
3
Absätze = soup.find_all('P')  # Findet alle Schlagworte
für p in Absätze:
drucken(Seite 1)

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
2
# Eine bestimmte Klasse finden
links = soup.find_all('A', Klasse_='btn')

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
2
3
# Holen Sie sich das href-Attribut des ersten Links
erster_Link = Suppe.find('A')
drucken(erster_Link['href'])

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
2
3
# Alle finden Tags innerhalb eines bestimmten
div_Abschnitt = soup.find('div', Klasse_='Inhalt')
Absätze = div_Absatz.find_all('P')

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.

  1. Bibliotheken importieren: Sie müssen importieren requests um die Webseite abzurufen und BeautifulSoup, um ihr HTML zu analysieren.
  2. Zur Webseite: Benutzen requests um die HTTP-GET-Anfrage an die Website zu erhalten.
  3. Analysieren Sie das HTML: Benutzen BeautifulSoup um das HTML zu analysieren.
  4. Gewünschte Daten extrahieren: Benutzen find() or find_all() um Text, Links oder Bilder zu extrahieren.

Hier ist ein vollständiges Beispiel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
importieren Zugriffe
für bs4 importieren BeautifulSuppe

# Schritt 1: Ziel-URL festlegen
URL = „http://quotes.toscrape.com“

# Schritt 2: Webseite abrufen
Antwort = Anfragen.get(URL)

# Schritt 3: Den HTML-Inhalt analysieren
if Antwort.Statuscode == 200:
Suppe = Schöne Suppe(Antwort.Text, 'html.parser')

# Schritt 4: Zitate und Autoren extrahieren
Anführungszeichen = soup.find_all('Spanne', Klasse_='Text')
Autoren = soup.find_all('klein', Klasse_='Autor')

# Drucken Sie die extrahierten Daten
für i in Angebot(len(Zitate)):
drucken(f"Zitat: {Anführungszeichen[i].text}")
drucken(f"Autor: {Autoren[i].text}\N")
sonst:
drucken(„Die Webseite konnte nicht abgerufen werden.“)

Daten von einer Website scrapen

Schauen wir uns das obige Skript an:

  1. Ziel-URL: Wir verwenden http://quotes.toscrape.com, das einige Beispieldaten zum Scrapen enthält.
  2. Seite abrufen: requests.get() ruft das HTML der Seite ab. Wir haben den Antwortcode überprüft, um festzustellen, ob die Anforderung erfolgreich war.
  3. Parsen mit BeautifulSoup: BeautifulSoup analysiert den HTML-Text in einen Analysebaum.
  4. Daten extrahieren:
  • find_all() findet alle <span> Tags mit Klassentext, um die Anführungszeichen zu erhalten.
  • find_all() findet alle <small> Tags mit der Klasse author um die Namen der Autoren zu erfahren.
  1. 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
2
3
4
5
Zitat: „Die Welt, wie wir sie geschaffen haben, ist ein Prozess unseres Denkens. Sie kann nicht verändert werden, ohne unser Denken zu ändern.“
Autor: Albert Einstein

Zitat: „Ein Tag ohne Sonnenschein ist wie, wissen Sie, die Nacht.“
Autor: Steve Martin

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
2
3
4
5
Antwort = Anfragen.get(„http://example.com“)
if Antwort.Statuscode == 200:
drucken("Seite erfolgreich abgerufen!")
sonst:
drucken(f"Seite konnte nicht abgerufen werden. Statuscode: {response.status_code}")
  • 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
2
3
4
5
Element = Suppe.find('div', Klasse_='Daten')
if Element:
drucken(element.text)
sonst:
drucken("Element nicht gefunden.")

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
für Selen importieren Webdriver
für selenium.webdriver.common.by importieren By
für selenium.webdriver.support.ui importieren WebDriverWarten
für selenium.webdriver.unterstützung importieren erwartete_Bedingungen as EC
für bs4 importieren BeautifulSuppe

# Browser starten
Treiber = webdriver.Chrome()
Treiber.get(„http://example.com“)

# Warten Sie, bis ein bestimmtes Element geladen ist (z. B. ein Element mit der ID „content“)
versuchen:
WebDriverWait(Treiber, 10).bis(
EC.Anwesenheit_eines_Elements_gefunden((Nach.ID, 'Inhalt'))
)
# Seite analysieren
Suppe = Schöne Suppe(Treiber.Seitenquelle, 'html.parser')
drucken(Suppe.Titel.Text)
endlich:
# Schließen Sie den Browser
treiber.quit()

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
importieren Zugriffe
für bs4 importieren BeautifulSuppe

URL = 'http://quotes.toscrape.com/page/1/'

während url:
Antwort = Anfragen.get(URL)
Suppe = Schöne Suppe(Antwort.Text, 'html.parser')

# Zitate extrahieren
für Angebot! in Suppe.find_all('Spanne', Klasse_='Text'):
drucken(Zitat.Text)

# Suchen Sie den Link „Nächste“ Seite
nächste_Seite = Suppe.finden('li', Klasse_='nächste')
url = nächste_seite.a['href'] if nächste_Seite sonst Keine
if url:
URL = „http://quotes.toscrape.com“ + URL

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
2
importieren Zeit
Zeit.Schlaf(2) # Fügen Sie eine 2-Sekunden-Verzögerung zwischen den Anfragen hinzu

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.

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.