Wie installiere ich Beautiful Soup und verwende es für Web-Scraping-Projekte?

In der heutigen, von Daten bestimmten Welt hat die traditionelle Methode der manuellen Datenerfassung ausgedient. Ein Computer mit Internetanschluss auf jedem Schreibtisch hat das Internet zu einer riesigen Quelle von Informationen gemacht. Die effizientere und zeitsparendere Methode der Datenerhebung ist heutzutage das Web Scraping. Und wenn es um Web Scraping geht, bietet Python ein mächtiges Tool namens Beautiful Soup. In diesem Beitrag führe ich Sie durch die Installationsschritte von Beautiful Soup, damit Sie mit dem Web Scraping beginnen können.

Bevor wir Beautiful Soup installieren und damit arbeiten, wollen wir herausfinden, warum Sie sich dafür entscheiden sollten.

Was ist Beautiful Soup?

Nehmen wir an, Sie recherchieren zu den „Auswirkungen von COVID auf die Gesundheit der Menschen“ und haben einige Webseiten mit relevanten Daten entdeckt. Aber was, wenn diese Seiten Ihnen keine Download-Option anbieten, um die Daten einfach herunterzuladen? Hier kommt Beautiful Soup ins Spiel.

Beautiful Soup ist eine Python-Bibliothek, die zum Abrufen von Daten von Webseiten dient. Sie ist besonders nützlich für das Auslesen von Informationen aus HTML- oder XML-Seiten.

Leonard Richardson brachte die Idee von Beautiful Soup zum Scrapen von Webseiten im Jahr 2004 hervor. Sein Engagement für das Projekt hält bis heute an. Er verkündet stolz die Veröffentlichungen jeder neuen Version von Beautiful Soup auf seinem Twitter-Account.

Obwohl Beautiful Soup für das Web Scraping mit Python 3.8 entwickelt wurde, funktioniert es sowohl mit Python 3 als auch mit Python 2.4 einwandfrei.

Oftmals verwenden Webseiten Captcha-Schutz, um ihre Daten vor KI-Tools zu schützen. In solchen Fällen können ein paar Anpassungen am „User-Agent“-Header in Beautiful Soup oder der Einsatz von Captcha-Lösungs-APIs einen zuverlässigen Browser simulieren und die Erkennungswerkzeuge überlisten.

Wenn Sie jedoch keine Zeit haben, sich mit Beautiful Soup auseinanderzusetzen, oder ein effizientes und einfaches Web Scraping wünschen, sollten Sie eine Web-Scraping-API in Betracht ziehen, bei der Sie einfach eine URL angeben und die Daten bereitgestellt bekommen.

Wenn Sie bereits Programmierer sind, wird die Verwendung von Beautiful Soup zum Scrapen aufgrund seiner einfachen Syntax bei der Navigation auf Webseiten und dem Extrahieren gewünschter Daten basierend auf bedingtem Parsing keine Herausforderung darstellen. Gleichzeitig ist es auch für Anfänger zugänglich.

Obwohl Beautiful Soup nicht für fortgeschrittenes Scraping ideal ist, ist es am besten geeignet, Daten aus Dateien auszulesen, die in Markup-Sprachen geschrieben sind.

Eine klare und detaillierte Dokumentation ist ein weiterer Pluspunkt von Beautiful Soup.

Lassen Sie uns nun einen einfachen Weg finden, um Beautiful Soup auf Ihrem System zu installieren.

Wie installiert man Beautiful Soup für Web Scraping?

Pip, ein benutzerfreundlicher Python-Paketmanager, der 2008 entwickelt wurde, ist heute ein Standardwerkzeug unter Entwicklern, um beliebige Python-Bibliotheken oder Abhängigkeiten zu installieren.

Pip wird standardmäßig mit der Installation neuerer Python-Versionen mitgeliefert. Wenn Sie also aktuelle Python-Versionen auf Ihrem System installiert haben, können Sie direkt loslegen.

Öffnen Sie die Eingabeaufforderung und geben Sie den folgenden Pip-Befehl ein, um Beautiful Soup sofort zu installieren:

pip install beautifulsoup4

Sie sollten etwas Ähnliches wie den folgenden Screenshot auf Ihrem Bildschirm sehen.

Stellen Sie sicher, dass Sie das PIP-Installationsprogramm auf die neueste Version aktualisiert haben, um häufige Fehler zu vermeiden.

Der Befehl zum Aktualisieren des Pip-Installationsprogramms auf die neueste Version lautet:

pip install --upgrade pip

Damit haben wir die Hälfte der Strecke geschafft.

Nun, da Sie Beautiful Soup auf Ihrem Computer installiert haben, lassen Sie uns tiefer in die Verwendung für Web Scraping eintauchen.

Wie importiert man Beautiful Soup und arbeitet damit für Web Scraping?

Geben Sie den folgenden Befehl in Ihre Python-IDE ein, um Beautiful Soup in das aktuelle Python-Skript zu importieren:

from bs4 import BeautifulSoup

Jetzt ist Beautiful Soup in Ihrer Python-Datei verfügbar und kann zum Scrapen verwendet werden.

Sehen wir uns ein Codebeispiel an, um zu erfahren, wie man mit Beautiful Soup die gewünschten Daten extrahiert.

Wir können Beautiful Soup anweisen, auf der Ziel-Website nach bestimmten HTML-Tags zu suchen und die darin enthaltenen Daten zu extrahieren.

In diesem Artikel verwende ich marketwatch.com, eine Seite, die Aktienkurse verschiedener Unternehmen in Echtzeit aktualisiert. Lassen Sie uns einige Daten von dieser Seite extrahieren, um uns mit der Beautiful Soup-Bibliothek vertraut zu machen.

Importieren Sie das „requests“-Paket, mit dem wir HTTP-Anfragen senden und empfangen können, sowie „urllib“, um die Webseite von ihrer URL zu laden:

from urllib.request import urlopen
import requests

Speichern Sie den Link der Webseite in einer Variablen, damit Sie später leicht darauf zugreifen können:

url="https://www.marketwatch.com/investing/stock/amzn"

Als nächstes verwenden wir die Methode „urlopen“ aus der „urllib“-Bibliothek, um die HTML-Seite in einer Variablen zu speichern. Übergeben Sie die URL an die Funktion „urlopen“ und speichern Sie das Ergebnis in einer Variablen:

page = urlopen(url)

Erstellen Sie ein Beautiful Soup-Objekt und parsen Sie die Webseite mit dem „html.parser“:

soup_obj = BeautifulSoup(page, 'html.parser')

Nun ist das gesamte HTML-Skript der Ziel-Webseite in der Variable „soup_obj“ gespeichert.

Bevor wir fortfahren, werfen wir einen Blick auf den Quellcode der Zielseite, um mehr über das HTML-Skript und die Tags zu erfahren.

Klicken Sie mit der rechten Maustaste auf eine beliebige Stelle auf der Webseite. Sie werden eine Option „Untersuchen“ finden, wie unten gezeigt:

Klicken Sie auf „Untersuchen“, um den Quellcode anzuzeigen.

Im obigen Quellcode finden Sie Tags, Klassen und spezifischere Informationen zu jedem Element, das auf der Benutzeroberfläche der Website sichtbar ist.

Die Methode „find“ in Beautiful Soup ermöglicht es uns, nach den gewünschten HTML-Tags zu suchen und die Daten abzurufen. Wir geben dazu den Klassennamen und die Tags an die Methode weiter, die dann die entsprechenden Daten extrahiert.

Zum Beispiel hat der Text „Amazon.com Inc.“, der auf der Webseite angezeigt wird, den Klassennamen „company__name“ und ist unter dem Tag „h1“ gespeichert. Wir können diese Informationen in die „find“-Methode eingeben, um das relevante HTML-Snippet in einer Variablen zu speichern:

name = soup_obj.find('h1', attrs={'class': 'company__name'})

Lassen Sie uns nun das in der Variable „name“ gespeicherte HTML-Skript und den gewünschten Text auf dem Bildschirm ausgeben:

print(name)

print(name.text)

Sie können die extrahierten Daten auf dem Bildschirm sehen.

Web Scraping der IMDb-Website

Viele von uns suchen auf der IMDb-Website nach Filmbewertungen, bevor sie sich einen Film ansehen. Diese Demonstration zeigt Ihnen, wie Sie eine Liste der am besten bewerteten Filme erstellen können, und hilft Ihnen, sich mit der Verwendung von Beautiful Soup für das Web Scraping vertraut zu machen.

Schritt 1: Importieren Sie die Beautiful Soup- und „requests“-Bibliotheken:

from bs4 import BeautifulSoup
import requests

Schritt 2: Weisen Sie der URL, die wir scrapen möchten, eine Variable namens „url“ zu, um den Zugriff im Code zu vereinfachen. Das „requests“-Paket wird verwendet, um die HTML-Seite von der URL zu erhalten:

url = requests.get('https://www.imdb.com/search/title/?count=100&groups=top_1000&sort=user_rating')

Schritt 3: Im folgenden Code-Snippet parsen wir die HTML-Seite der aktuellen URL, um ein Beautiful Soup-Objekt zu erstellen:

soup_obj = BeautifulSoup(url.text, 'html.parser')

Die Variable „soup_obj“ enthält nun das gesamte HTML-Skript der gewünschten Webseite, wie im folgenden Bild:

Untersuchen wir den Quellcode der Webseite, um das HTML-Skript der Daten zu finden, die wir auslesen möchten.

Bewegen Sie den Mauszeiger über das Webseitenelement, das Sie extrahieren möchten. Klicken Sie als Nächstes mit der rechten Maustaste darauf und wählen Sie die Option „Untersuchen“, um den Quellcode dieses bestimmten Elements anzuzeigen. Die folgenden Grafiken werden Ihnen dabei helfen:

Die Klasse „lister-list“ enthält alle am besten bewerteten filmbezogenen Daten als Unterteilungen in aufeinanderfolgenden div-Tags.

Im HTML-Skript jeder Filmkarte haben wir unter der Klasse „lister-item mode-advanced“ ein Tag „h3“, das den Filmnamen, den Rang und das Erscheinungsjahr speichert, wie im folgenden Bild hervorgehoben:

Hinweis: Die „find“-Methode in Beautiful Soup sucht nach dem ersten Tag, das mit dem eingegebenen Namen übereinstimmt. Im Gegensatz dazu sucht die Methode „find_all“ nach allen Tags, die mit der gegebenen Eingabe übereinstimmen.

Schritt 4: Sie können die Methoden „find“ und „find_all“ verwenden, um das HTML-Skript mit Namen, Rang und Jahr jedes Films in einer Listenvariablen zu speichern:

top_movies = soup_obj.find('div',attrs={'class': 'lister-list'}).find_all('h3')

Schritt 5: Durchlaufen Sie die Liste der Filme, die in der Variablen „top_movies“ gespeichert sind, und extrahieren Sie mithilfe des folgenden Codes den Namen, den Rang und das Jahr jedes Films im Textformat aus seinem HTML-Skript:

for movie in top_movies:
    movi_name = movie.a.text
    rank = movie.span.text.rstrip('.')
    year = movie.find('span', attrs={'class': 'lister-item-year text-muted unbold'})
    year = year.text.strip('()')
    print(movi_name + " ", rank+ " ", year+ " ")

Im Ausgabescreen sehen Sie die Liste der Filme mit Namen, Rang und Erscheinungsjahr:

Sie können die ausgegebenen Daten mit etwas Python-Code problemlos in eine Excel-Tabelle verschieben und für Ihre Analyse verwenden.

Abschließende Gedanken

Dieser Beitrag hat Sie durch die Installation von Beautiful Soup für Web Scraping geführt. Die von mir gezeigten Beispiele sollen Ihnen den Einstieg in Beautiful Soup erleichtern.

Da Sie sich für die Installation von Beautiful Soup für Web Scraping interessieren, empfehle ich Ihnen dringend, sich diese verständliche Anleitung anzusehen, um mehr über Web Scraping mit Python zu erfahren.