ScrapegraphAI: Leistungsstarkes Web-Scraping mit LLMs

Leitfäden, Python, Scraping, 27. September 20245 Min. gelesen

Web Scraping hat sich von der einfachen regelbasierten Extraktion zu fortschrittlicheren Techniken entwickelt, die sich auf große Sprachmodelle (LLMs) zur kontextbezogenen Datenextraktion stützen. ScrapegraphAI steht an der Spitze dieser Entwicklung und ermöglicht Web Scraping durch leistungsstarke LLMs wie OpenAI, Gemini und sogar lokale Modelle wie Ollama. In diesem Blog erfahren Sie, was ScrapegraphAI ist, wie es funktioniert und wie ein reales Beispiel für das Scraping von Daten von einer Website mit Proxy-Integration funktioniert.

Was werden Sie lernen?

In diesem Blog werden wir darüber berichten:

  • Was ScrapegraphAI ist und wie es funktioniert
  • Die grundlegende Verwendung von ScrapegraphAI zum Scrapen von Websites
  • Integration von Proxys für bessere Leistung
  • Ein praktisches Beispiel, das das GPT-4o-mini-Modell von OpenAI verwendet, um Buchdaten von der Website Books to Scrape zu extrahieren

Was ist ScrapegraphAI und wie funktioniert es?

ScrapegraphAI ist ein robustes Web-Scraping-Framework (Open Source), das große Sprachmodelle zur dynamischen Extraktion von Daten aus Webseiten nutzt. Anders als herkömmliche Scraper, die sich auf starre CSS-Selektoren oder XPath verlassen, verwendet ScrapegraphAI LLMs, um strukturierte Daten aus einer Vielzahl von Quellen zu interpretieren und zu extrahieren, darunter dynamische Webseiten und Dateien wie PDFs. Geben Sie einfach die gewünschten Informationen an und überlassen Sie ScrapeGraphAI die Arbeit, die im Vergleich zu herkömmlichen Scraping-Tools flexibler und wartungsärmer ist. Ein wichtiges Merkmal von ScrapegraphAI ist die Möglichkeit, ein Schema für die zu extrahierenden Daten zu definieren. Sie können ein strukturiertes Format für Ihre Ausgabe festlegen, und ScrapegraphAI passt die extrahierten Daten an dieses Schema an.

Eines der herausragenden Merkmale von ScrapegraphAI ist seine Flexibilität bei der Auswahl von LLMs, mit Unterstützung für:

  • OpenAIs GPT-Modelle wie GPT-3.5 und GPT-4o-mini
  • Gemini für spezifischere Anwendungsfälle
  • Lokale Modelle mit Ollama für kostengünstige, private Scraping-Lösungen

Wichtige Scraping-Pipelines

ScrapegraphAI bietet mehrere Standard-Scraping-Pipelines für unterschiedliche Anforderungen. Einige der gängigsten sind:

  • SmartScraperGraph: Ein einseitiger Scraper, der nur eine Benutzerabfrage und eine Eingabequelle (Website oder lokale Datei) benötigt.
  • SuchGraph: Extrahiert Informationen aus den ersten n Suchergebnissen einer Suchmaschine.
  • SpeechGraph: Liest Daten von einer Seite ab und erzeugt aus den Ergebnissen eine Audiodatei.
  • ScriptCreatorGraph: Scraped eine einzelne Seite und erzeugt ein Python-Skript für zukünftige Extraktionen.
  • SmartScraperMultiGraph: Scraped Daten von mehreren Seiten mit einer einzigen Eingabeaufforderung und einer Liste von URLs.
  • ScriptCreatorMultiGraph: Ähnlich wie das vorige Programm, erzeugt aber Python-Skripte für das Scraping mehrerer Seiten.

Im nächsten Abschnitt werden wir uns auf den SmartScraperGraph konzentrieren, der das Scraping einer einzelnen Seite ermöglicht, indem er einfach eine Eingabeaufforderung und eine Quell-URL bereitstellt.

Grundlegende Verwendung von ScrapegraphAI

Voraussetzungen

Dazu müssen Sie ein paar Abhängigkeiten installieren. Dazu können Sie den folgenden Befehl ausführen:

pip install scrapegraphai openai python-dotenv
playwright installieren
  • scrapegraphai: Dies ist das Kernpaket für ScrapegraphAI.
  • openai: Wir werden das GPT-4o-mini-Modell von OpenAI für das Scraping verwenden.
  • python-dotenv: Dies ermöglicht es uns, Umgebungsvariablen wie API-Schlüssel sicher aus einer .env-Datei zu laden.

Sobald Sie diese installiert haben, stellen Sie sicher, dass Sie Ihren OpenAI-API-Schlüssel bereit haben. Speichern Sie ihn in einer .env-Datei, um Ihre Anmeldedaten sicher zu halten:

OPENAI_APIKEY=Ihr_openai_api_Schlüssel

Code-Beispiel: Scraping von Daten aus Büchern zum Scrapen

Nehmen wir an, wir wollen Informationen über alle Bücher auf Books to Scrape extrahieren, einschließlich der Bücher:

  • Buch Name
  • Preis
  • Verfügbarkeit
  • Bewertungen

Hier ist ein Codebeispiel, das die SmartScraperGraph-Pipeline von ScrapegraphAI verwendet:

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

# Load the OpenAI API key from .env file
load_dotenv()
openai_key = os.getenv("OPENAI_APIKEY")

# Define configuration for the LLM
graph_config = {
   "llm": {
      "api_key": openai_key,
      "model": "openai/gpt-4o-mini",
   },
}

prompt = """
Extract all the books from this website including
- Book Name
- Price
- Availability 
- Reviews
"""

# Create the SmartScraperGraph instance
smart_scraper_graph = SmartScraperGraph(
   prompt=prompt,
   source="https://books.toscrape.com/",
   config=graph_config
)


if __name__ == '__main__':
   result = smart_scraper_graph.run()
   print(result)

Erläuterung des Kodex:

  • LLM-Konfiguration: Wir konfigurieren ScrapegraphAI so, dass es die OpenAIs GPT-4o-mini Modell, indem Sie den API-Schlüssel und den Modellnamen angeben.
  • Eingabeaufforderung: Die benutzerdefinierte Eingabeaufforderung weist die KI an, Informationen von der Website über jedes Buch zu extrahieren, einschließlich Name, Preis, Verfügbarkeit und Rezensionen.
  • Quell-URL: Wir geben die URL der Website an, die wir scrapen wollen.
  • Betrieb des Abstreifers: Die run() Methode startet den Scraping-Prozess, und das Ergebnis wird als Liste von Wörterbüchern ausgedruckt, die jeweils Details über ein Buch enthalten.

Beispiel Ausgabe

Hier ist ein Beispiel dafür, wie die Ausgabe aussehen könnte:

{'Book Name': 'A Light in the Attic', 'Price': '£51.77', 'Availability': 'In stock', 'Reviews': 'NA'},
{'Book Name': 'Tipping the Velvet', 'Price': '£53.74', 'Availability': 'In stock', 'Reviews': 'NA'},
{'Book Name': 'Soumission', 'Price': '£50.10', 'Availability': 'In stock', 'Reviews': 'NA'},
{'Book Name': 'Sharp Objects', 'Price': '£47.82', 'Availability': 'In stock', 'Reviews': 'NA'},
# ... more books ...

Wie Sie sehen können, zieht der Scraper erfolgreich Details für jedes Buch in einem strukturierten Format, bereit für die Verwendung in Ihrer Datenpipeline.

Proxy-Integration

Beim Scraping in großem Maßstab oder bei Websites mit Anti-Scraping-Maßnahmen ist die Integration von Proxys unerlässlich, um IP-Sperren, Captchas und Ratenbegrenzungen zu vermeiden. Die Verwendung von Proxys bietet nicht nur Anonymität, sondern stellt auch sicher, dass Sie große Datenmengen ohne Unterbrechungen scrapen können.

Eine der besten Optionen hierfür sind Proxys für Privatpersonen, da sie von echten IP-Adressen für Privatpersonen stammen und daher schwerer zu erkennen und zu blockieren sind.

Anwohner-Proxys von ProxyScrape eignen sich perfekt für Web-Scraping-Szenarien, vor allem, wenn es um Websites mit strengen Anti-Scraping-Maßnahmen geht. Wir bieten rotierende IP-Adressen von verschiedenen Standorten aus an, um sicherzustellen, dass Ihre Anfragen so aussehen, als kämen sie von echten Nutzern. Auf diese Weise können Sie Beschränkungen umgehen, Verbote umgehen und einen kontinuierlichen Zugang zu den von Ihnen benötigten Daten sicherstellen.

Schauen wir uns nun an, wie Proxies in ScrapegraphAI integriert werden:

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

# Load the OpenAI API key from .env file
load_dotenv()
openai_key = os.getenv("OPENAI_APIKEY")

# Define the configuration with proxy integration
graph_config = {
   "llm": {
      "api_key": openai_key,
      "model": "openai/gpt-4o-mini",
   },
   "loader_kwargs": {
      "proxy": {
         "server": "rp.proxyscrape.com:6060",
         "username": "your_username",
         "password": "your_password",
      },
   },
}

prompt = """
Extract all the books from this website including
- Book Name
- Price
- Availability 
- Reviews
"""

# Create the SmartScraperGraph instance
smart_scraper_graph = SmartScraperGraph(
   prompt=prompt,
   source="https://books.toscrape.com/",
   config=graph_config
)

# Run the scraper and print the result
if __name__ == '__main__':
   result = smart_scraper_graph.run()
   print(result)

Erläuterung der Proxy-Integration:

  • Proxy-Konfiguration: Der Proxy wird unter dem Menüpunkt loader_kwargs Taste in der graph_config. Hier legen Sie die Adresse Ihres Proxyservers, Ihren Benutzernamen und Ihr Passwort fest.
  • Dadurch wird sichergestellt, dass alle Anfragen von ScrapegraphAI über den angegebenen Proxy-Server geleitet werden, wodurch Einschränkungen oder IP-Sperren auf der Ziel-Website umgangen werden können.

Schlussfolgerung

In diesem Blog haben wir die Leistungsfähigkeit von ScrapegraphAI untersucht, einem modernen Web-Scraping-Tool, das große Sprachmodelle (Large Language Models, LLMs) verwendet, um strukturierte Daten auf intelligente Weise aus Websites zu extrahieren. Wir haben die wichtigsten Funktionen des Tools vorgestellt, darunter verschiedene Scraping-Pipelines wie den SmartScraperGraph, und ein praktisches Beispiel für das Scraping von Buchdaten von einer Website mit dem GPT-4o-mini-Modell von OpenAI gegeben.

Außerdem haben wir gezeigt, wie man Proxys integriert, insbesondere die Residential Proxys vonProxyScrape. Proxys sind wichtig, um anonym zu bleiben, Beschränkungen zu umgehen und den Datenzugriff aufrechtzuerhalten, insbesondere bei Websites, die Anti-Scraping-Taktiken wie IP-Sperren oder Ratenbeschränkungen anwenden.

Durch die Integration der Proxys vonProxyScrape können Sie sicherstellen, dass Ihre Web-Scraping-Aktivitäten effizienter, sicherer und skalierbarer sind, selbst bei den anspruchsvollsten Websites.