Skip to content

bright-data-de/web-scraping-with-scrapegraphai

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

LLM-basiertes Web-Scraping mit ScrapeGraphAI

Promo

Dieser Leitfaden erklärt, wie Sie ScrapeGraphAI und Large Language Models verwenden, um Web-Scraping zu vereinfachen und die Datenextraktion zu automatisieren.

Why use ScrapeGraphAI?

Traditionelles Web-Scraping erfordert das Schreiben komplexen, zeitaufwändigen Codes, der spezifisch für jedes Website-Layout ist und häufig bricht, wenn sich Seiten ändern.

ScrapeGraphAI nutzt Large Language Models (LLMs), um Daten wie ein Mensch zu interpretieren und zu extrahieren, sodass Sie sich auf die Daten statt auf das Layout konzentrieren können. Durch die Integration von LLMs verbessert ScrapeGraphAI die Datenextraktion, automatisiert die Inhaltsaggregation und ermöglicht Analysen in Echtzeit.

Prerequisites

Sie benötigen die folgenden Voraussetzungen:

Setting Up Your Environment

Erstellen Sie eine virtuelle Umgebung:

python -m venv venv

Aktivieren Sie dann die virtuelle Umgebung. Unter macOS und Linux:

source venv/bin/activate

Unter Windows können Sie diesen Befehl verwenden:

venv\Scripts\activate

Installieren Sie ScrapeGraphAI und seine Abhängigkeiten:

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. Speichern Sie dazu Umgebungsvariablen in einer .env -Datei, um sie getrennt von den Code-Dateien zu halten.

Erstellen Sie eine neue Datei mit dem Namen .env im Projektverzeichnis und fügen Sie die folgende Zeile hinzu, die Ihren OpenAI-Schlüssel angibt:

OPENAI_API_KEY="your-openai-api-key"

Diese Datei sollte nicht in Versionskontrollsysteme wie Git eingecheckt werden. Um dies zu verhindern, fügen Sie .env zu Ihrer .gitignore -Datei hinzu.

Scraping Data with ScrapeGraphAI

Beginnen Sie damit, Produktdaten von Books to Scrape zu scrapen, 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 – inklusive Preisen, Bewertungen und Verfügbarkeitsstatus:

Books to Scrape website

Beim traditionellen HTML-Scraping inspizieren Sie Elemente manuell, um Daten zu extrahieren. Mit ScrapeGraphAI geben Sie einfach per Prompt an, welche Daten Sie möchten, und das LLM extrahiert sie für Sie.

ScrapeGraphAI bietet verschiedene Graphen für unterschiedliche Scraping-Anforderungen:

  • SmartScraperGraph: Single-Page-Scraper, der einen Prompt und eine URL oder lokale Datei verwendet.
  • SearchGraph: Multi-Page-Scraper, der Daten aus Suchmaschinen-Ergebnissen extrahiert.
  • SpeechGraph: Erweitert SmartScraperGraph um Text-to-Speech und erzeugt eine Audio-Datei.
  • ScriptCreatorGraph: Gibt ein Python-Skript zum Scraping der angegebenen URL aus.

Sie können auch benutzerdefinierte Graphen erstellen, indem Sie Nodes kombinieren, um spezifische Anforderungen abzudecken.

Um ein präzises Scraping sicherzustellen, konfigurieren Sie den Scraper korrekt – einschließlich eines klaren Prompts, der Modellauswahl, Proxies für georestriktierte Inhalte und Headless-Modus für Effizienz. Eine korrekte Einrichtung beeinflusst die Genauigkeit Ihrer extrahierten Daten.

Writing the Scraper Code

Erstellen Sie eine neue Datei mit dem Namen app.py und fügen Sie den folgenden Code ein:

from dotenv import load_dotenv
import os
from scrapegraphai.graphs import SmartScraperGraph

# Load environment variables from .env file
load_dotenv()

# Access the OpenAI API key
OPENAI_API_KEY = os.getenv('OPENAI_API_KEY')

# Configuration for ScrapeGraphAI
graph_config = {
    "llm": {
        "api_key": OPENAI_API_KEY,
        "model": "openai/gpt-4o-mini",
 }
}

# Define the prompt and source
prompt = "Extract the title, price and availability of all books on this page."
source = "http://books.toscrape.com/"

# Create the scraper graph
smart_scraper_graph = SmartScraperGraph(
 prompt=prompt,
 source=source,
 config=graph_config
)

# Run the scraper
result = smart_scraper_graph.run()

# Output the results
print(result)

Dieser Code importiert essenzielle Module wie os und dotenv zur Verwaltung von Umgebungsvariablen sowie die Klasse SmartScraperGraph aus ScrapeGraphAI für das Scraping. Er lädt Umgebungsvariablen über dotenv, um sensible Daten (z. B. API-Schlüssel) zu schützen. Anschließend konfiguriert der Code ein LLM für das Scraping, indem er das Modell und den API-Schlüssel angibt. Diese Konfiguration definiert zusammen mit der Website-URL und dem Scraping-Prompt den SmartScraperGraph, der über die Methode run() ausgeführt wird, um die angegebenen Daten zu sammeln.

Um den Code auszuführen, verwenden Sie im Terminal den Befehl python app.py. Die Ausgabe wird 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:

Stellen Sie sicher, dass Sie das Paket grpcio installiert haben, um mögliche Fehler zu vermeiden.

Während ScrapeGraphAI den Teil der Datenextraktion beim Web-Scraping vereinfacht, gibt es weiterhin einige typische Herausforderungen, wie CAPTCHAs und IP-Blocks.

Um das Surfverhalten nachzuahmen, können Sie zeitgesteuerte Verzögerungen in Ihrem Code implementieren. Außerdem können Sie Rotierende Proxies nutzen, um eine Erkennung zu vermeiden. Zusätzlich können CAPTCHA-Lösungsdienste wie der CAPTCHA solver von Bright Data oder Anti Captcha in Ihren Scraper integriert werden, um CAPTCHAs automatisch für Sie zu lösen.

Wichtig:

Stellen Sie stets sicher, dass Sie die Nutzungsbedingungen einer Website einhalten. Scraping zur persönlichen Nutzung ist oft akzeptabel, aber die Weiterverbreitung von Daten kann rechtliche Folgen haben.

Using Proxies with ScrapeGraphAI

ScrapeGraphAI ermöglicht Ihnen das Einrichten eines Proxy-Dienstes, um IP-Blocking zu vermeiden und auf georestriktierte Seiten zuzugreifen. Fügen Sie dazu 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, passen Sie Ihre graph_config wie folgt an 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 Web-Scraping im großen Maßstab. Sie erhalten Kontrolle über den Proxy-Standort und können dadurch auf georestriktierte Inhalte zugreifen. Benutzerdefinierte Proxies sind außerdem zuverlässiger und sicherer als kostenlose Proxies, was das Risiko von IP-Blocks oder Ratenbegrenzung reduziert.

Cleaning and Preparing Data

Nach dem Scraping ist es wichtig, die Daten zu bereinigen und vorzuverarbeiten – insbesondere, wenn Sie sie für KI-Modelle verwenden. Saubere Daten stellen sicher, dass Ihre Modelle aus korrekten, konsistenten Informationen lernen, wodurch sich Leistung und Zuverlässigkeit verbessern. Datenbereinigung umfasst typischerweise den Umgang mit fehlenden Werten, das Korrigieren von Datentypen, die Normalisierung von Text und das Entfernen von Duplikaten.

Hier ist ein Beispiel, wie Sie Ihre gescrapten Daten mit pandas bereinigen können:

import pandas as pd

# Convert the result to a DataFrame
df = pd.DataFrame(result["books"])

# Remove currency symbols and convert prices to float
df['price'] = df['price'].str.replace('£', '').astype(float)

# Standardize availability text
df['availability'] = df['availability'].str.strip().str.lower()

# Handle missing values if any
df.dropna(inplace=True)

# Preview the cleaned data
print(df.head())

Dieser Code bereinigt die Daten, indem er das Währungssymbol aus den Buchpreisen entfernt, den Verfügbarkeitsstatus standardisiert, indem er ihn in Kleinbuchstaben umwandelt, und etwaige fehlende Werte behandelt.

Installieren Sie vor dem Ausführen dieses Codes die Bibliothek pandas für die Datenmanipulation:

pip install pandas

Öffnen Sie Ihr Terminal und führen Sie python app.py aus. Die Ausgabe sollte wie folgt aussehen:

                                   title  price availability
0                   A Light in the Attic  51.77     in stock
1                     Tipping the Velvet  53.74     in stock
2                             Soumission  50.10     in stock
3                          Sharp Objects  47.82     in stock
4  Sapiens: A Brief History of Humankind  54.23     in stock

Dies ist nur ein Beispiel für das Bereinigen gescrapter Daten; der Prozess variiert je nach Datensatz und LLM-Anwendungsfall. Die Bereinigung stellt sicher, dass Ihre Sprachmodelle strukturierte und aussagekräftige Eingaben erhalten. Erfahren Sie mehr über die beliebtesten AI use cases.

Sie finden den gesamten Code für dieses Tutorial in diesem GitHub repo.

Conclusion

ScrapeGraphAI verwendet LLMs für adaptives Web-Scraping, passt sich an Website-Änderungen an und extrahiert Daten intelligent. Das Skalieren von Scraping bringt jedoch Herausforderungen wie IP-Blocks, CAPTCHAs und rechtliche Compliance mit sich.

Bright Data bietet Lösungen, um diese Herausforderungen zu bewältigen, darunter Web Scraper APIs, Proxy-Dienste und Serverless Scraping. Außerdem stellen sie einsatzbereite Datensätze von über hundert beliebten Websites bereit.

Starten Sie noch heute Ihre kostenlose Testversion!

About

Verwenden Sie ScrapeGraphAI und LLMs für Web-Scraping. Automatisieren Sie die Datenextraktion, umgehen Sie Website-Änderungen und verbessern Sie die Scraping-Effizienz mit KI-gestützten Tools.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors