Grundlagen der Fetcher¶
Einführung¶
Fetcher sind Klassen, mit denen Sie in einer Zeile Anfragen senden oder Seiten abrufen können. Sie bieten viele Funktionen und geben ein Response-Objekt zurück. Seit v0.3 gibt es für alle Fetcher eigene Klassen, die eine Sitzung offen halten. Ein Browser-Fetcher kann so denselben Browser für alle Anfragen nutzen, statt mehrere Browser zu öffnen. Welche Variante passt, hängt von Ihrem Anwendungsfall ab.
Vor v0.2 war Scrapling nur ein Parser. Die Fetcher kamen dazu, damit die Bibliothek Schritt für Schritt alles abdecken kann, was Sie für Web Scraping brauchen.
Fetcher sind keine einfachen Wrapper um andere Bibliotheken. Sie nutzen diese Bibliotheken als Engine zum Senden von Anfragen und Abrufen von Seiten. Alle Fetcher bieten Funktionen, die ihre Engines selbst nicht haben. Dabei nutzen sie deren Möglichkeiten vollständig und optimieren sie für Web Scraping.
Überblick über die Fetcher¶
Scrapling bietet HTTP-Fetcher (Fetcher und AsyncFetcher) und einen Browser-Fetcher (StealthyFetcher). Für wiederholte Anfragen gibt es Sitzungsklassen.
Die folgende Tabelle hilft Ihnen bei der Auswahl.
| Funktion | Fetcher | StealthyFetcher |
|---|---|---|
| Relative Geschwindigkeit | 🐇🐇🐇🐇🐇 | 🐇🐇🐇 |
| Tarnung | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| Optionen gegen Bot-Erkennung | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| JavaScript laden | ❌ | ✅ |
| Speicherbedarf | ⭐ | ⭐⭐⭐ |
| Besonders geeignet für | Einfaches Scraping, wenn HTTP-Anfragen ausreichen | - Dynamisch geladene Websites - Kleine Automatisierungen - Einfache bis komplexe Schutzmaßnahmen |
| Browser | ❌ | Chromium und Google Chrome |
| Verwendete Browser-API | ❌ | Playwright |
| Einrichtung | Einfach | Einfach |
Auf den nächsten Seiten erklären wir die einzelnen Fetcher genauer.
Parser für alle Fetcher konfigurieren¶
Alle Fetcher werden auf dieselbe Weise importiert, wie Sie auf den nächsten Seiten sehen:
Danach können Sie den Fetcher direkt verwenden, ohne eine Instanz zu erstellen. Er nutzt die Standardeinstellungen des Parsers: Wenn Sie den Parser (Klasse Selector) einstellen möchten, der die Antwort vor der Rückgabe verarbeitet, machen Sie zuerst Folgendes:from scrapling.fetchers import Fetcher
Fetcher.configure(adaptive=True, keep_comments=False) # and the rest
Die verfügbaren Argumente sind adaptive, adaptive_domain, huge_tree, keep_comments, storage und storage_args. Es sind dieselben wie bei der Klasse Selector. Mit <fetcher_class>.display_config() können Sie die aktuelle Konfiguration jederzeit anzeigen.
Info
Das Argument adaptive ist standardmäßig deaktiviert. Sie müssen es aktivieren, um diese Funktion zu nutzen.
Parser für einzelne Anfragen konfigurieren¶
Die oben gezeigte Konfiguration gilt global für alle Anfragen und Abrufe über diese Klasse. Das hält die Nutzung einfach.
Wenn Sie für jede Anfrage andere Einstellungen brauchen, übergeben Sie der Anfragemethode (fetch/get/post/...) ein Dictionary im Argument selector_config.
Das Response-Objekt¶
Das Objekt Response basiert auf der Klasse Selector. Es enthält zusätzlich Angaben zur Antwort, zum Beispiel Header, Status und Cookies:
from scrapling.fetchers import Fetcher
page = Fetcher.get('https://example.com')
page.status # HTTP status code
page.reason # Status message
page.cookies # Response cookies as a dictionary
page.headers # Response headers
page.request_headers # Request headers
page.history # Response history of redirections, if any
page.body # Raw response body as bytes
page.encoding # Response encoding
page.meta # Response metadata dictionary (e.g., proxy used). Mainly helpful with the spiders system.
Response-Objekt zurück. Browser-Sitzungen mit record_requests=True liefern über session.network.search(limit=None) und session.network.get(request_id) ebenfalls gespeicherte Response-Objekte. Unter Netzwerkverlauf erfahren Sie mehr über gespeicherte API-Antworten und den Umstieg auf v5.
Das Objekt Response kann die Seite auch in einer Zeile in bereinigtes Markdown für LLMs umwandeln:
css_selector können Sie die Umwandlung auf bestimmte Elemente beschränken. Dafür ist das Extra rag nötig, das auch in ai/shell/all enthalten ist. Die Seite RAG-Systeme erstellen erklärt die Details.
Note
Anders als bei der Klasse Selector ist der Antwortinhalt der Klasse Response seit v0.4 immer vom Typ bytes.