Web Scraping-Filmrezensionen von IMDB Using Beautiful Soup | von Jingyi (Jean) Wu | Juni 2023

0
24


Internet Scraping ist eine Möglichkeit, im Web zu surfen, jedoch auf automatische, skalierbare Weise, die es uns ermöglicht, die Daten zu speichern, damit wir sie weiter verarbeiten und analysieren können (Web page & Tay, 2022).

Um das Ziel zu erreichen, Rezensionen und Bewertungen eines bestimmten Movies aus der IMDB zu extrahieren, verwenden wir Lovely Soup, ein beliebtes Python-Paket, das für Anfänger entwickelt wurde, um Informationen aus Webseiten zu extrahieren.

# Import Lovely Soup bundle
import pandas as pd
import numpy as np
import requests
from bs4 import BeautifulSoup

Wir werden den Movie „The Shawshank Redemption“ als Beispiel verwenden, da der Movie aufgrund seiner großen Anerkennung und der großen Anzahl verfügbarer Rezensionen eine zuverlässige Datenquelle für die Analyse darstellt.

Wir importieren eine Reihe von Python-Bibliotheken, darunter Pandas, Numpy, Requests und Lovely Soup, für Datenmanipulation, HTTP-Anfragen und HTML-Analyse. Nachdem wir zur IMDB-Web site navigiert und die URL für die Rezensionen und Bewertungen dieses Movies gefunden haben, importieren wir die gesamte Webseite und speichern sie unter dem Namen „URL“. Als Nächstes erstellen wir eine leere Zeichenfolgenvariable mit dem Namen „key“, um den Paginierungsschlüssel beizubehalten, der zum Abrufen aufeinanderfolgender Rezensionsseiten erforderlich ist, und ein Wörterbuch mit dem Namen „information“ mit den Schlüsseln „title“, „assessment“ und „score“, um die extrahierten Daten zu speichern Titel-, Rezensions- und Bewertungsdaten.

# Question the Web site
url = ("https://www.imdb.com/title/tt0111161/critiques/_ajax?ref_=undefined&paginationKey={}")
# Create a pagination key
key = ""
# Create a dictionary to retailer the extracted info.
information = {"title": [], "assessment": [],'score':[]}

Nach der Ersteinrichtung haben wir eine Schleife erstellt, um relevante Informationen aus IMDb zu extrahieren. In diesem Fall extrahieren wir maximal 20.000 Rezensionen für den Movie „The Shawshank Redemption“. Diese Begrenzung dient dazu, zu verhindern, dass der Schabevorgang übermäßig viel Zeit in Anspruch nimmt.

Innerhalb der Schleife wird eine HTTP-GET-Anfrage an die IMDb-URL gesendet, um auf nachfolgende Seiten zuzugreifen und Rezensionen und Bewertungen für jede Seite abzurufen. Die GET-Anfrage wird gesendet, da zunächst nur 25 Bewertungen auf der Webseite angezeigt werden, bis auf die Schaltfläche „Mehr anzeigen“ geklickt wird. Anschließend werden weitere Bewertungen angezeigt. In diesem Fall replizieren wir diese Aktion programmgesteuert, indem wir eine GET-Anfrage senden, um eine beträchtliche Menge wertvoller Daten zur weiteren Analyse abzurufen. Dadurch wird sichergestellt, dass die Stichprobengröße ausreicht, um aussagekräftige und verlässliche Erkenntnisse zu gewinnen.

Ein Paginierungsschlüssel ist im Internet-Scraping-Verfahren für den Zugriff auf weitere Rezensionsseiten unerlässlich. Dabei handelt es sich um ein bestimmtes Ingredient innerhalb des HTML-geparsten Inhalts einer Webseite, z. B. einen Hyperlink oder eine Schaltfläche, die zur nächsten Seite, vorherigen Seite oder einer bestimmten Seite navigiert. Daher kennzeichnen wir den Paginierungsschlüssel als „div“-Ingredient mit dem Attribut „class_=‘load-more-data“ und durchsuchen die Webseite nach diesem Schlüssel. Wenn ein Paginierungsschlüssel gefunden wird, bedeutet dies, dass weitere Seiten mit Rezensionen vorhanden sind. Folglich ruft die Schleife weiterhin die Rezensionen und Bewertungen von diesen zusätzlichen Seiten ab. Wenn jedoch im analysierten HTML-Inhalt kein Paginierungsschlüssel gefunden wird, bedeutet dies, dass keine weiteren Seiten mehr abgerufen werden können. In diesem Szenario wird die Schleife mithilfe der break-Anweisung beendet, um den Internet-Scraping-Prozess zu stoppen.

Die Funktion zip() wird dann verwendet, um gleichzeitig drei Hear zu durchlaufen: die Titel, Rezensionen und Bewertungen der Rezensionen. Diese Elemente werden mithilfe ihrer jeweiligen CSS-Klassen auf der Seite lokalisiert. Für jede Iteration extrahieren wir den Textinhalt der Titel-, Rezensions- und Bewertungselemente und hängen ihn an die entsprechenden Hear des Datenwörterbuchs an. Die Methode get_text() wird verwendet, um den Textinhalt abzurufen, und die Methode strip() entfernt alle führenden oder nachgestellten Leerzeichen. Bei der Bewertung prüfen wir, ob ein Bewertungselement vorhanden ist. Ist dies der Fall, extrahieren wir den Textinhalt; andernfalls weisen wir „N/A“ als Standardwert zu. Indem wir diese Schritte iterativ durchführen, sammeln wir die Titel, Rezensionen und Bewertungen der Rezensionen und speichern sie zur weiteren Analyse im Datenwörterbuch.

n = 0
whereas n < 20000:
response = requests.get(url.format(key))
soup = BeautifulSoup(response.content material, "html.parser")
# Discover the pagination key
pagination_key = soup.discover("div", class_="load-more-data")
if not pagination_key:
break
# Replace the `key` variable in-order to scrape extra critiques
key = pagination_key["data-key"]
for title, assessment,score in zip(
soup.find_all(class_="title"), soup.find_all(class_="textual content show-more__control"),soup.find_all(class_="rating-other-user-rating")
):
information["title"].append(title.get_text(strip=True))
information["review"].append(assessment.get_text())
information["rating"].append(score.get_text(strip=True) if score else "N/A")

n += 1

Durch die Ausführung dieses Codes extrahieren wir erfolgreich 10245 Rezensionen zusammen mit den entsprechenden Titeln und Bewertungen für den Movie.

Hier sind die ersten fünf Zeilen unseres Datensatzes, in denen wir die Titel, Rezensionen und Bewertungen des Movies „The Shawshank Redemption“ sehen können.

Wir können jede Bewertung auch in unserem Datensatz beobachten. Hier ist ein Beispiel einer Rezension.

Wir ermutigen Sie auch, etwas Ähnliches auszuprobieren. Sie können den oben beschriebenen Vorgang für einen anderen Movie wiederholen, indem Sie einfach den URL-Hyperlink ändern. Sobald Sie die Rezensionen für einen bestimmten Movie erfolgreich extrahiert haben, können Sie mit anderen Textual content-Mining-Aufgaben fortfahren, um tiefer in den Inhalt einzutauchen. Viel Spaß beim Schaben!

Referenz:

Web page, G. & Tay, HF (2022). Hummerland. Hummerland. https://lobsterland.net/



Source link

HINTERLASSEN SIE EINE ANTWORT

Please enter your comment!
Please enter your name here