Beim herkömmlichen Web-Scraping muss oft komplizierter, zeitaufwändiger Code geschrieben werden, der auf bestimmte Website-Layouts zugeschnitten ist und bei Änderungen an den Websites leicht fehlerhaft werden kann. ScrapeGraphAI nutzt große Sprachmodelle (LLMs), um Informationen zu extrahieren und wie ein Mensch zu interpretieren, sodass Sie sich auf die Daten statt auf das Layout konzentrieren können. Die Integration von LLMs in ScrapeGraphAI verbessert die Datenextraktion, automatisiert die Aggregation von Inhalten und ermöglicht Echtzeitanalysen.
In diesem Artikel erfahren Sie, wie Sie ScrapeGraphAI für das Web-Scraping verwenden können. Aber zuvor möchten wir Ihnen die Lösungen von Bright Data vorstellen, mit denen Sie Zeit und Geld sparen können.
Web-Scraping-Lösungen von Bright Data
Bright Data bietet eine umfassende Suite von Web-Scraping-Lösungen, die für eine effiziente, skalierbare und konforme Datenextraktion optimiert sind:
- Web Scraper API
- Gebrauchsfertige Datensätze
- Benutzerdefinierte Datensätze
Diese Lösungen ermöglichen eine schnelle, genaue und skalierbare Datenerfassung und eignen sich perfekt für Projekte jeder Größenordnung, von kleinen Anwendungen bis hin zu Anforderungen auf Unternehmensebene.
Implementierung von LLM-Web-Scraping mit ScrapeGraphAI
Bevor Sie mit diesem Tutorial beginnen, müssen Sie folgende Voraussetzungen erfüllen:
- Python 3.x installiert.
- Ein Ope nAI-Konto. In diesem Tutorial werden OpenAI-KI-LLMs zum Scrapen von Daten mit ScrapeGraphAI verwendet. Es ist zwar möglich, andere Modelle wie Anthropic, Google oder Open-Source-Modelle wie Llama und Mistral AI zu verwenden, aber in diesem Tutorial wird aufgrund seiner Beliebtheit und einfachen Einrichtung GPT-4 verwendet.
Wenn Sie mit Web-Scraping in Python nicht vertraut sind, lesen Sie dieses Tutorial zum Thema Web-Scraping, um loszulegen.
Richten Sie Ihre Umgebung ein
Als Erstes müssen Sie eine virtuelle Umgebung erstellen. Öffnen Sie Ihr Terminal und navigieren Sie zu Ihrem Projektverzeichnis:
python -m venv venv
Aktivieren Sie anschließend die virtuelle Umgebung. Unter macOS und Linux können Sie dies mit dem folgenden Befehl tun:
source venv/bin/activate
Unter Windows können Sie diesen Befehl verwenden:
venvScriptsactivate
Nachdem Sie die virtuelle Umgebung aktiviert haben, müssen Sie ScrapeGraphAI und seine Abhängigkeiten installieren:
pip install scrapegraphai
playwright install
Der Befehl „playwright install“ richtet die erforderlichen Browser für Chromium, Firefox und WebKit ein.
Um Umgebungsvariablen sicher zu verwalten, installieren Sie python-dotenv:
pip install python-dotenv
Es ist wichtig, sensible Informationen wie API-Schlüssel zu schützen. Es wird empfohlen, Umgebungsvariablen in einer .env-Datei zu speichern, um sie von den Code-Dateien zu trennen.
Erstellen Sie eine neue Datei mit dem Namen .env im Projektverzeichnis und fügen Sie die folgende Zeile hinzu, in der Sie Ihren OpenAI-Schlüssel angeben:
OPENAI_API_KEY="Ihr-OpenAI-API-Schlüssel"
Diese Datei sollte nicht in Versionskontrollsysteme wie Git übernommen werden. Um dies zu verhindern, fügen Sie .env zu Ihrer .gitignore-Datei hinzu.
Daten mit ScrapeGraphAI scrapen
In diesem Tutorial beginnen Sie mit dem Scraping von Produktdaten aus Books to Scrape, einer Demo-Website speziell zum Üben von Web-Scraping-Techniken. Diese Website ahmt einen Online-Buchladen nach und bietet eine Vielzahl von Büchern aus verschiedenen Genres, komplett mit Preisen, Bewertungen und Verfügbarkeitsstatus:

Beim herkömmlichen HTML-Web-Scraping müssten Sie den HTML-Code der Seite analysieren und Elemente und Tags manuell überprüfen, um die gewünschten Daten zu finden. Dieser Prozess ist zeitaufwändig und erfordert ein solides Verständnis von Webstrukturen. Mit ScrapeGraphAI müssen Sie nur die gewünschten Daten über eine Eingabeaufforderung angeben, und das LLM ist intelligent genug, um sie zu extrahieren.
ScrapeGraphAI bietet verschiedene Arten von Graphen für unterschiedliche Scraping-Anforderungen. Diese Graphen definieren, wie der Scraping-Prozess strukturiert ist und was er erreichen soll. Hier ist ein kurzer Überblick über einige der verschiedenen Graphen:
- SmartScraperGraph ist ein einseitiger Scraper, bei dem Sie eine Eingabeaufforderung und eine URL oder eine lokale Datei angeben. Er verwendet ein LLM, um die von Ihnen angegebenen Informationen zu extrahieren.
- SearchGraph ist ein mehrseitiger Scraper, der Informationen aus Suchmaschinenergebnissen basierend auf Ihrer Eingabe extrahiert.
- SpeechGraph erweitert SmartScraperGraph um eine Text-to-Speech-Funktion, die eine Audiodatei des extrahierten Inhalts generiert.
- ScriptCreatorGraph nimmt eine Eingabeaufforderung und eine URL entgegen und gibt anstelle von Ergebnissen ein Python-Skript aus, mit dem die angegebene URL gescrapt werden kann.
Wenn diese Graphen nicht genau Ihren Anforderungen entsprechen, können Sie mit ScrapeGraphAI auch benutzerdefinierte Graphen erstellen, indem Sie verschiedene Knoten kombinieren und den Scraping-Prozess an Ihre spezifischen Anforderungen anpassen.
Neben der Auswahl des richtigen Diagrammtyps müssen Sie auch Ihren Scraper richtig konfigurieren, insbesondere was die Eingabeaufforderung und die Modellauswahl betrifft. Die Eingabeaufforderung hilft dem LLM dabei, genau zu verstehen, welche Daten extrahiert werden sollen – achten Sie daher darauf, dass sie klar und eindeutig ist. Darüber hinaus bestimmt die Auswahl des richtigen LLM-Modells, wie gut der Scraper den Inhalt der Website verarbeitet und interpretiert. Sie können auch andere Optionen wie Proxys konfigurieren, um ein reibungsloseres Scraping von geografisch eingeschränkten Inhalten zu gewährleisten, sowie den Headless-Modus, um den Prozess effizient und schnell zu halten. Die richtige Konfiguration bestimmt letztendlich, wie präzise und relevant die gescrapten Daten sein werden.
Schreiben Sie den Scraper-Code
Um den Scraper-Code zu schreiben, erstellen Sie eine neue Datei mit dem Namen app.py und fügen Sie die folgenden Codezeilen hinzu:
from dotenv import load_dotenv
import os
from scrapegraphai.graphs import SmartScraperGraph
# Laden Sie die Umgebungsvariablen aus der .env-Datei.
load_dotenv()
# Greifen Sie auf den OpenAI-API-Schlüssel zu.
OPENAI_API_KEY = os.getenv('OPENAI_API_KEY')
# Konfiguration für ScrapeGraphAI
graph_config = {
"llm": {
"api_key": OPENAI_API_KEY,
"model": "openai/gpt-4o-mini",
}
}
# Prompt und Quelle definieren
prompt = "Extrahieren Sie den Titel, den Preis und die Verfügbarkeit aller Bücher auf dieser Seite."
source = "http://books.toscrape.com/"
# Erstellen Sie den Scraper-Graphen
smart_scraper_graph = SmartScraperGraph(
prompt=prompt,
source=source,
config=graph_config)
# Führen Sie den Scraper aus
result = smart_scraper_graph.run()
# Geben Sie die Ergebnisse aus
print(result)
Dieser Code importiert wichtige Module wie os und dotenv für die Verarbeitung von Umgebungsvariablen und die SmartScraperGraph-Klasse von ScrapeGraphAI, die für das Scraping verwendet wird. Anschließend lädt er die Umgebungsvariablen über dotenv, um sensible Daten wie API-Schlüssel zu schützen. Als Nächstes erstellt der Code eine LLM-Konfiguration für das Scraping, in der das zu verwendende Modell und der API-Schlüssel angegeben werden. Diese Konfiguration wird zusammen mit der Website-URL und der Scraping-Eingabeaufforderung verwendet, um Ihren SmartScraperGraph zu definieren, der mit der Methode run() ausgeführt wird und den Prozess zum Sammeln der angegebenen Daten auslöst.
Um diesen Code auszuführen, öffnen Sie Ihr Terminal und führen Sie python app.py aus. Ihre Ausgabe sollte wie folgt aussehen:
{
"books": [
{
"title": "A Light in the Attic",
"price": "£51.77",
"availability": "In stock"
},
{
"title": "Tipping the Velvet",
"price": "£53.74",
"availability": "In stock"
}, ...
]
}
Hinweis: Wenn bei der Ausführung des Codes Probleme auftreten, müssen Sie möglicherweise das
grpcio-Paketmanuell installieren, das eine zugrunde liegende Abhängigkeit von ScrapeGraphAI ist. Dazu können Sie den folgenden Befehl verwenden:
pip install grpcio
ScrapeGraphAI erleichtert zwar die Datenextraktion beim Web-Scraping, dennoch gibt es einige häufige Herausforderungen wie CAPTCHAs und IP-Blocks, mit denen Sie umgehen können müssen.
Um das Browsing-Verhalten nachzuahmen, können Sie zeitgesteuerte Verzögerungen in Ihrem Code implementieren. Sie können auch rotierende Proxys verwenden, um eine Erkennung zu vermeiden. Darüber hinaus können CAPTCHA-Lösungen wie der CAPTCHA-Löser von Bright Data oder Anti Captcha in Ihren Scraper integriert werden, um CAPTCHAs automatisch für Sie zu lösen.
Bitte beachten Sie: Stellen Sie immer sicher, dass Sie die Nutzungsbedingungen einer Website einhalten. Scraping für den persönlichen Gebrauch ist oft akzeptabel, aber die Weitergabe von Daten kann rechtliche Konsequenzen haben.
Verwendung von Proxys mit ScrapeGraphAI
Mit ScrapeGraphAI können Sie einen Proxy-Dienst einrichten, um IP-Blockierungen zu vermeiden und auf geografisch eingeschränkte Inhalte zuzugreifen. Sie können einen kostenlosen Proxy-Dienst verwenden oder Ihren eigenen benutzerdefinierten Proxy-Server konfigurieren.
Um einen kostenlosen Proxy-Dienst zu verwenden, fügen Sie Folgendes zu Ihrer graph_config hinzu:
graph_config = {
"llm": {
"api_key": OPENAI_API_KEY,
"model": "openai/gpt-4o-mini",
},
"loader_kwargs": {
"Proxy": {
"server": "broker",
"criteria": {
"anonymous": True,
"secure": True,
"countryset": {"US"},
"timeout": 10.0,
"max_tries": 3
},
},
}
}
Diese Konfiguration weist ScrapeGraphAI an, einen kostenlosen Proxy-Dienst zu verwenden, der Ihren Kriterien entspricht.
Um einen benutzerdefinierten Proxy-Server von einem Anbieter wie Bright Data zu verwenden, ändern Sie Ihre graph_config wie folgt und fügen Sie Ihre Server-URL, Ihren Benutzernamen und Ihr Passwort ein:
graph_config = {
"llm": {
"api_key": OPENAI_API_KEY,
"model": "openai/gpt-4o-mini",
},
"loader_kwargs": {
"Proxy": {
"server": "http://your_proxy_server:port",
"username": "your_username",
"password": "your_password",
},
}
}
Die Verwendung eines benutzerdefinierten Proxy-Servers bietet mehrere Vorteile, insbesondere für das Web-Scraping in großem Umfang. Sie haben die Kontrolle über den Standort des Proxys und können so geografisch eingeschränkte Inhalte scrapen. Darüber hinaus sind benutzerdefinierte Proxys im Vergleich zu kostenlosen Proxys zuverlässiger und sicherer, wodurch die Wahrscheinlichkeit verringert wird, dass Ihre IP-Adresse gesperrt oder die Übertragungsrate begrenzt wird.
Daten bereinigen und vorbereiten
Nach dem Scraping der Daten müssen Sie diese bereinigen und vorverarbeiten, insbesondere wenn Sie sie in ein KI-Modell einspeisen möchten. Bereinigte Daten stellen sicher, dass Ihre Modelle aus genauen und konsistenten Informationen lernen, was sich direkt auf ihre Leistung und Zuverlässigkeit auswirkt. Die Datenbereinigung umfasst in der Regel die Behandlung fehlender Werte, die Korrektur von Datentypen, die Normalisierung von Text und die Entfernung von Duplikaten.
Hier ist ein Beispiel dafür, wie Sie die zuvor gesammelten Daten mit Pandas bereinigen können:
import pandas as pd
# Konvertieren Sie das Ergebnis in einen DataFrame.
df = pd.DataFrame(result["books"])
# Entfernen Sie Währungssymbole und konvertieren Sie Preise in Float.
df['price'] = df['price'].str.replace('£', '').astype(float)
# Standardisieren Sie den Text zur Verfügbarkeit
df['availability'] = df['availability'].str.strip().str.lower()
# Behandeln Sie fehlende Werte, falls vorhanden
df.dropna(inplace=True)
# Vorschau der bereinigten Daten
print(df.head())
Dieser Code bereinigt die Daten, indem er die Währungssymbole aus den Buchpreisen entfernt, den Verfügbarkeitsstatus durch Umwandlung in Kleinbuchstaben standardisiert und fehlende Werte behandelt.
Bevor Sie den Code ausführen, müssen Sie die Pandas- Bibliothek für die Datenbearbeitung installieren:
pip install pandas
Um den Code auszuführen, öffnen Sie Ihr Terminal und führen Sie python app.py aus. Ihre Ausgabe sollte wie folgt aussehen:
title price availability
0 A Light in the Attic 51,77 auf Lager
1 Tipping the Velvet 53,74 auf Lager
2 Soumission 50,10 auf Lager
3 Sharp Objects 47,82 auf Lager
4 Sapiens: A Brief History of Humankind 54,23 auf Lager
Dies ist nur ein Beispiel dafür, wie Sie gescrapte Daten bereinigen können – der Bereinigungsprozess variiert je nach den Daten und dem trainierten LLM-Anwendungsfall. Wenn Sie Ihre Daten bereinigen, stellen Sie sicher, dass Ihre Sprachmodelle gut strukturierte und aussagekräftige Eingaben erhalten. Wenn Sie mehr darüber erfahren möchten, wie Sie Daten für KI-Projekte nutzen können, sollten Sie sich mit Daten für KI befassen.
Der gesamte Code für dieses Tutorial ist in diesem GitHub-Repo verfügbar.
Fazit
ScrapeGraphAI verwendet LLMs, um einen adaptiven Ansatz für das Web-Scraping zu bieten, der sich an Änderungen in Website-Strukturen anpasst und Daten intelligent extrahiert. Die Skalierung des Web-Scrapings bringt jedoch Herausforderungen mit sich, wie das Blockieren von IPs, die CAPTCHA-Lösung und die Einhaltung gesetzlicher Vorschriften.
Um diese Herausforderungen zu bewältigen, bietet Bright Data eine umfassende Suite von Web-Scraping-Lösungen, die speziell auf KI- und Machine-Learning-Projekte zugeschnitten sind. Dazu gehören die Bright Data Web Scraper APIs, Proxy-Dienste und Serverless Scraping. Darüber hinaus bietet Bright Data auch gebrauchsfertige Datensätze mit Daten von über hundert beliebten Websites.
Starten Sie noch heute die Gratis-Testversion!