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.
Beim Web Scraping werden automatisch Daten von Websites extrahiert. Es ermöglicht Ihnen das Sammeln und Strukturieren von Informationen für Aufgaben wie:
Bevor Sie in das Skript eintauchen, müssen Sie die erforderlichen Bibliotheken installieren.
Python installieren
Stellen Sie sicher, dass Python auf Ihrem System installiert ist.
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!
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:
Eine vollständige Liste der Methoden finden Sie in der BeautifulSoup-Dokumentation.
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.
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.
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.
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.
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.
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.
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:
Den vollständigen Quellcode finden Sie in diesem Github-Repository.
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:
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!