Heim > Backend-Entwicklung > Python-Tutorial > So extrahieren Sie Daten aus Goodreads mit Python und BeautifulSoup

So extrahieren Sie Daten aus Goodreads mit Python und BeautifulSoup

Susan Sarandon
Freigeben: 2024-12-10 10:40:18
Original
251 Leute haben es durchsucht

Web Scraping ist ein leistungsstarkes Tool zum Sammeln von Daten von Websites. Ganz gleich, ob Sie Produktbewertungen sammeln, Preise verfolgen oder, in unserem Fall, Goodreads-Bücher durchsuchen, Web Scraping bietet endlose Möglichkeiten für datengesteuerte Anwendungen.

In diesem Blog-Beitrag erforschen wir die Grundlagen des Web-Scrapings, die Leistungsfähigkeit der Python BeautifulSoup-Bibliothek und erläutern ein Python-Skript, das zum Scraping von Goodreads Choice Awards-Daten entwickelt wurde. Abschließend besprechen wir, wie diese Daten für weitere Analysen oder Anwendungen in einer CSV-Datei gespeichert werden.


Was ist Goodreads?

Goodreads ist die weltweit größte Plattform für Leser und Buchempfehlungen. Es bietet Benutzern Zugriff auf Buchrezensionen, Autorendetails und beliebte Rankings. Jedes Jahr veranstaltet Goodreads die Goodreads Choice Awards, bei denen Leser für ihre Lieblingsbücher aus verschiedenen Genres wie Belletristik, Fantasy, Liebesromanen und mehr abstimmen. Dies macht Goodreads zu einem idealen Ziel für Web Scraping, um Erkenntnisse über angesagte Bücher und Autoren zu sammeln.


Was ist Web Scraping?

Beim Web Scraping werden automatisch Daten von Websites extrahiert. Es ermöglicht Ihnen das Sammeln und Strukturieren von Informationen für Aufgaben wie:

  • Trends und Muster analysieren.
  • Aggregieren von Inhalten wie Rezensionen oder Artikeln.
  • Fütterung von Modellen oder Datenbanken für maschinelles Lernen.

Einrichten Ihrer Umgebung

Bevor Sie in das Skript eintauchen, müssen Sie die erforderlichen Bibliotheken installieren.

  1. Python installieren

    Stellen Sie sicher, dass Python auf Ihrem System installiert ist.

  2. Erforderliche Bibliotheken installieren

    Installieren Sie die erforderlichen Bibliotheken mit pip:

    Anfrage: Ermöglicht uns, HTTP-Anfragen an eine URL zu senden und den Inhalt der Webseite abzurufen.

    BeautifulSoup: Vereinfacht die HTML-Analyse und Datenextraktion.

Sobald diese Installationen abgeschlossen sind, können Sie mit dem Schaben beginnen!


Einführung in BeautifulSoup

BeautifulSoup ist eine Python-Bibliothek zum Parsen von HTML- und XML-Dokumenten. Es ermöglicht Entwicklern, durch Seitenstrukturen zu navigieren, Inhalte zu extrahieren und Roh-HTML in ein strukturiertes Format umzuwandeln.

Schlüsselmethoden in BeautifulSoup

Hier sind einige wesentliche Methoden, die wir in unserem Skript verwenden werden:

  • BeautifulSoup(html, 'html.parser'): Initialisiert den Parser und ermöglicht Ihnen die Arbeit mit dem HTML-Inhalt.
  • supple.select(selector): Findet Elemente mithilfe von CSS-Selektoren, z. B. Klassen oder Tags.
  • supple.find(class_='class_name'): Sucht das erste Vorkommen eines Elements mit einer angegebenen Klasse.
  • supple.find_parent(class_='class_name'): Findet das übergeordnete Tag des aktuellen Elements.
  • supple.get('attribute'): Ruft den Wert eines Attributs von einem Element ab, wie href oder src.

Eine vollständige Liste der Methoden finden Sie in der BeautifulSoup-Dokumentation.


Einrichten des Skripts

Beginnen wir damit, die notwendigen Bibliotheken zu importieren und benutzerdefinierte Header zu definieren, um einen Browser nachzuahmen. Dies hilft, eine Blockierung durch die Website zu vermeiden.

Scraping-Kategorien und Bücher

Wir beginnen mit der Definition der URLs für die Goodreads‘ Choice Awards-Seite und die Hauptanwendung. Wir senden eine Anfrage an start_url und erhalten den Inhalt der Webseite.

Jede Kategorie enthält ein Genre und einen Link zu der entsprechenden Seite. Mit „soup.select“ extrahieren wir alle unter der Klasse „.category“ aufgeführten Kategorien.

How to Scrape Data From Goodreads Using Python and BeautifulSoup

Als nächstes durchlaufen Sie jede Kategorie, um den Genrenamen und die Seiten-URL zu erhalten.

Hier extrahieren wir den Kategorienamen (Genre) und die URL der Kategorieseite zur weiteren Verarbeitung.

Wir senden eine weitere Anfrage an jede Kategorie-URL und suchen alle Bücher unter dieser Kategorie.

category_books enthält die Liste aller Bücher unter der jeweiligen Kategorie.

Buchdaten extrahieren

Sobald wir die Liste der Bücher haben, werden wir jedes Buch durchlaufen und die Daten extrahieren.

Stimmen extrahieren

Wenn wir im DOM sehen, ist die Stimmenzahl im übergeordneten Element des Kategorieelements vorhanden. Wir müssen also die Methode find_parent verwenden, um das Element zu finden und die Abstimmungszahl zu extrahieren.

How to Scrape Data From Goodreads Using Python and BeautifulSoup

Buchtitel, Autor und Bild-URL extrahieren

Die URL jedes Buchs, die URL des Coverbilds, der Titel und der Autor werden extrahiert.

Die Funktion „clean_string“ stellt sicher, dass der Titel sauber formatiert ist. Sie können es oben im Skript definieren

Weitere Buchdetails extrahieren

Um weitere Details zum Buch wie Bewertungen, Rezensionen usw. zu erhalten, senden wir eine weitere Anfrage an book_url_formatted.

Hier gibt get_ratings_reviews den Bewertungs- und Rezensionstext gut formatiert zurück.

How to Scrape Data From Goodreads Using Python and BeautifulSoup

Sie können diese Funktion oben im Skript definieren.

Durch die Navigation zur Detailseite jedes Buchs werden zusätzliche Informationen wie Bewertungen, Rezensionen und detaillierte Beschreibungen extrahiert. Hier prüfen wir auch, ob das Buchbeschreibungselement vorhanden ist, andernfalls fügen wir eine Standardbeschreibung ein, damit das Skript nicht fehlschlägt.

Hier haben wir auch Autorendetails, Veröffentlichungsinformationen und andere Metadaten gesammelt.

Erstellen Sie ein Buchwörterbuch

Lassen Sie uns alle Daten, die wir für ein Buch extrahiert haben, in einem Wörterbuch speichern.

Wir werden dieses Wörterbuch verwenden, um die Daten in einer CSV-Datei hinzuzufügen.


Speichern von Daten in einer CSV-Datei

Wir werden das CSV-Modul verwenden, das Teil der Standardbibliothek von Python ist. Sie müssen es also nicht separat installieren.

Zuerst müssen wir prüfen, ob dies der erste Eintrag ist. Diese Prüfung ist erforderlich, um den Header in der CSV-Datei in der ersten Zeile hinzuzufügen.

Wir verwenden mode="w", wodurch eine neue CSV-Datei mit dem Header-Eintrag erstellt wird.

Jetzt hängen wir für alle weiteren Einträge die Daten an die CSV-Datei an:

mode="a" hängt die Daten an die CSV-Datei an.

Lehnen Sie sich jetzt zurück, entspannen Sie sich und genießen Sie eine Tasse Kaffee ☕️, während das Skript läuft.

Sobald es fertig ist, sehen die endgültigen Daten so aus:

How to Scrape Data From Goodreads Using Python and BeautifulSoup

Den vollständigen Quellcode finden Sie in diesem Github-Repository.


Zusammenfassung

Wir haben gelernt, wie man Goodreads-Daten mit Python und BeautifulSoup crawlt. Angefangen bei der Grundeinrichtung bis hin zum Speichern von Daten in einer CSV-Datei haben wir jeden Aspekt des Scraping-Prozesses untersucht. Die geschabten Daten können verwendet werden für:

  • Datenvisualisierung (z. B. die beliebtesten Genres oder Autoren).
  • Maschinelle Lernmodelle zur Vorhersage der Buchpopularität.
  • Aufbau persönlicher Buchempfehlungssysteme.

Web Scraping eröffnet Möglichkeiten für kreative Datenanalysen und Anwendungen. Mit Bibliotheken wie BeautifulSoup werden selbst komplexe Scraping-Aufgaben bewältigbar. Denken Sie daran, beim Scrapen ethische Praktiken einzuhalten und die Nutzungsbedingungen der Website zu respektieren!

Das obige ist der detaillierte Inhalt vonSo extrahieren Sie Daten aus Goodreads mit Python und BeautifulSoup. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage