Crawl4AI Python-Tutorial: von pip install bis LLM-Extraktion
Crawl4AI mit pip install -U crawl4ai installieren, einmal crawl4ai-setup ausführen und dann jede Seite mit AsyncWebCrawler crawlen. Diese Anleitung zeigt die fünf Muster, die du in der Praxis brauchst, jeweils als kopierfertiges Skript.
Aktualisiert am 06.11.2026
Direkt testen: URL zu Markdown
1. Crawl4AI installieren
python -m venv .venv && source .venv/bin/activate
pip install -U crawl4ai
crawl4ai-setup # lädt den Playwright-Browser
crawl4ai-doctor # optionaler Check
Crawl4AI braucht eine aktuelle Python-3-Version. crawl4ai-setup installiert den Chromium-Browser für Playwright; ohne diesen Schritt bricht der erste Crawl mit einem Browser-Fehler ab.
2. Erster Crawl mit AsyncWebCrawler
import asyncio
from crawl4ai import AsyncWebCrawler
async def main():
async with AsyncWebCrawler() as crawler:
result = await crawler.arun(url="https://docs.crawl4ai.com/")
print(result.markdown[:500])
asyncio.run(main())
arun() liefert ein Ergebnisobjekt. Die wichtigsten Felder: success, markdown, html, links und extracted_content.
3. Sauberes „Fit“-Markdown mit Inhaltsfilter
Rohes Markdown enthält Menüs und Footer. Ein Inhaltsfilter behält den Haupttext – genau das, was ein LLM braucht:
from crawl4ai import AsyncWebCrawler, CrawlerRunConfig, CacheMode
from crawl4ai.markdown_generation_strategy import DefaultMarkdownGenerator
from crawl4ai.content_filter_strategy import PruningContentFilter
config = CrawlerRunConfig(
cache_mode=CacheMode.BYPASS,
markdown_generator=DefaultMarkdownGenerator(
content_filter=PruningContentFilter(threshold=0.48, threshold_type="fixed")
),
)
# innerhalb des Crawler-Kontexts:
result = await crawler.arun(url=URL, config=config)
print(result.markdown.fit_markdown)
Das Online-Tool oben arbeitet mit „Nur Hauptinhalt“ nach derselben Idee und erzeugt dieses Skript für deine URL.
4. Viele URLs parallel crawlen
urls = ["https://example.com/a", "https://example.com/b"]
results = await crawler.arun_many(urls=urls, config=config)
for r in results:
print(r.url, r.success, len(r.markdown or ""))
5. Strukturiertes JSON mit einem LLM extrahieren
import os
from pydantic import BaseModel
from crawl4ai import CrawlerRunConfig, LLMConfig, LLMExtractionStrategy
class Item(BaseModel):
name: str
price: str
strategy = LLMExtractionStrategy(
llm_config=LLMConfig(provider="openai/gpt-4o-mini", api_token=os.getenv("OPENAI_API_KEY")),
schema=Item.model_json_schema(),
extraction_type="schema",
instruction="Extrahiere jedes Produkt mit Name und Preis.",
)
config = CrawlerRunConfig(extraction_strategy=strategy)
result = await crawler.arun(url=URL, config=config)
print(result.extracted_content) # JSON-String
Bei vielen Seiten mit gleichem Aufbau ist JsonCssExtractionStrategy günstiger: CSS-Selektoren einmal festlegen (oder das Schema einmalig per LLM erzeugen lassen) und danach ohne LLM-Kosten pro Seite extrahieren.
wait_until="networkidle" in CrawlerRunConfig setzen oder auf einen Selektor warten. Das Online-Tool ergänzt diese Zeile, wenn du „Seite braucht JavaScript“ anhakst.Offizielle Referenz: docs.crawl4ai.com. Weiter: Crawl4AI als API mit Docker.
Crawl4AI Python: häufige Fragen
Wie installiere ich Crawl4AI?
pip install -U crawl4ai ausführen, danach crawl4ai-setup für den Browser. crawl4ai-doctor prüft, ob alles läuft.Was ist AsyncWebCrawler?
async with und ruft arun() für eine URL oder arun_many() für mehrere auf. Browser-Einstellungen gehören in BrowserConfig, Einstellungen pro Crawl in CrawlerRunConfig.