Zum Hauptinhalt springen
Die Olostep LangChain-Integration bietet umfassende Tools zum Erstellen von KI-Agenten, die Daten von jeder Website suchen, scrapen, analysieren und strukturieren können. Perfekt für LangChain- und LangGraph-Anwendungen.

Funktionen

Die Integration bietet Zugriff auf alle 5 Olostep API-Funktionen:

Scrapes

Inhalte von jeder einzelnen URL in mehreren Formaten extrahieren (Markdown, HTML, JSON, Text)

Batches

Bis zu 10.000 URLs parallel verarbeiten. Batch-Jobs werden in 5-8 Minuten abgeschlossen

Answers

KI-gesteuerte Websuche mit natürlichen Sprachabfragen und strukturiertem Output

Maps

Alle URLs von einer Website für die Analyse der Seitenstruktur extrahieren

Crawls

Autonomes Entdecken und Scrapen ganzer Websites durch Verfolgen von Links

Installation

pip install langchain-olostep

Einrichtung

Setze deinen Olostep API-Schlüssel als Umgebungsvariable:
export OLOSTEP_API_KEY="your_olostep_api_key_here"
Hole dir deinen API-Schlüssel vom Olostep Dashboard.

Verfügbare Tools

scrape_website

Inhalte von einer einzelnen URL extrahieren. Unterstützt mehrere Formate und JavaScript-Rendering.
url
string
erforderlich
Website-URL zum Scrapen (muss http:// oder https:// enthalten)
format
string
Standard:"markdown"
Ausgabeformat: markdown, html, json oder text
country
string
Ländercode für ortsspezifische Inhalte (z.B. “US”, “GB”, “CA”)
wait_before_scraping
integer
Wartezeit in Millisekunden für JavaScript-Rendering (0-10000)
parser
string
Optionaler Parser-ID für spezialisierte Extraktion (z.B. “@olostep/amazon-product”)
from langchain_olostep import scrape_website
import asyncio

# Eine Website scrapen
content = asyncio.run(scrape_website.ainvoke({
    "url": "https://example.com",
    "format": "markdown"
}))

print(content)

scrape_batch

Mehrere URLs parallel verarbeiten (bis zu 10.000 gleichzeitig).
urls
array
erforderlich
Liste der zu scrapenden URLs
format
string
Standard:"markdown"
Ausgabeformat für alle URLs: markdown, html, json oder text
country
string
Ländercode für ortsspezifische Inhalte
wait_before_scraping
integer
Wartezeit in Millisekunden für JavaScript-Rendering
parser
string
Optionaler Parser-ID für spezialisierte Extraktion
from langchain_olostep import scrape_batch
import asyncio

# Mehrere URLs scrapen
result = asyncio.run(scrape_batch.ainvoke({
    "urls": [
        "https://example1.com",
        "https://example2.com",
        "https://example3.com"
    ],
    "format": "markdown"
}))

print(result)
# Gibt zurück: {"batch_id": "batch_xxx", "status": "in_progress", ...}

answer_question

Das Web durchsuchen und KI-gesteuerte Antworten mit Quellen erhalten. Perfekt für Datenanreicherung und Forschung.
task
string
erforderlich
Frage oder Aufgabe, nach der gesucht werden soll
json_schema
object
Optionales JSON-Schema-Diktat/String, das das gewünschte Ausgabeformat beschreibt
from langchain_olostep import answer_question
import asyncio

# Eine einfache Frage stellen
result = asyncio.run(answer_question.ainvoke({
    "task": "What is the capital of France?"
}))

print(result)
# Gibt zurück: {"answer": {"result": "Paris"}, "sources": [...]}

extract_urls

Alle URLs von einer Website für die Analyse der Seitenstruktur extrahieren.
url
string
erforderlich
Website-URL, von der URLs extrahiert werden sollen
search_query
string
Optionale Suchabfrage zur Filterung von URLs
top_n
integer
Begrenzung der zurückgegebenen URLs
include_urls
array
Glob-Muster zum Einschließen (z.B. [“/blog/**”])
exclude_urls
array
Glob-Muster zum Ausschließen (z.B. [“/admin/**”])
from langchain_olostep import extract_urls
import asyncio

# Alle URLs von einer Website erhalten
result = asyncio.run(extract_urls.ainvoke({
    "url": "https://example.com",
    "top_n": 100
}))

print(result)
# Gibt zurück: {"urls": [...], "total_urls": 100, ...}

crawl_website

Autonomes Entdecken und Scrapen ganzer Websites durch Verfolgen von Links.
start_url
string
erforderlich
Start-URL für das Crawlen
max_pages
integer
Standard:"100"
Maximale Anzahl von zu crawlenden Seiten
include_urls
array
Glob-Muster zum Einschließen (z.B. [”/**”] für alle)
exclude_urls
array
Glob-Muster zum Ausschließen (z.B. [“/admin/**”])
max_depth
integer
Maximale Tiefe, die von der start_url gecrawlt werden soll
include_external
boolean
Standard:"false"
Externe URLs einschließen
from langchain_olostep import crawl_website
import asyncio

# Gesamte Dokumentationsseite crawlen
result = asyncio.run(crawl_website.ainvoke({
    "start_url": "https://docs.example.com",
    "max_pages": 100
}))

print(result)
# Gibt zurück: {"crawl_id": "crawl_xxx", "status": "in_progress", ...}

LangChain Agent Integration

Intelligente Agenten erstellen, die das Web durchsuchen und scrapen können:
from langchain.agents import initialize_agent, AgentType
from langchain_openai import ChatOpenAI
from langchain_olostep import (
    scrape_website,
    answer_question,
    extract_urls
)

# Agent mit Olostep-Tools erstellen
tools = [scrape_website, answer_question, extract_urls]
llm = ChatOpenAI(model="gpt-4o-mini")

agent = initialize_agent(
    tools=tools,
    llm=llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True
)

# Den Agenten verwenden
result = agent.run("""
Research the company at https://company.com:
1. Scrape their about page
2. Search for their latest funding round
3. Extract all their product pages
""")

print(result)

LangGraph Integration

Komplexe mehrstufige Workflows mit LangGraph erstellen:
from langgraph.graph import StateGraph, END
from langchain_olostep import (
    scrape_website,
    scrape_batch,
    answer_question,
    extract_urls
)
from langchain_openai import ChatOpenAI
import json

def create_research_agent():
    workflow = StateGraph(dict)
    
    def discover_pages(state):
        # Alle URLs von der Zielseite extrahieren
        result = extract_urls.invoke({
            "url": state["target_url"],
            "include_urls": ["/product/**"],
            "top_n": 50
        })
        state["urls"] = json.loads(result)["urls"]
        return state
    
    def scrape_pages(state):
        # Entdeckte Seiten im Batch scrapen
        result = scrape_batch.invoke({
            "urls": state["urls"],
            "format": "markdown"
        })
        state["batch_id"] = json.loads(result)["batch_id"]
        return state
    
    def answer_questions(state):
        # KI verwenden, um Fragen zu den Daten zu beantworten
        result = answer_question.invoke({
            "task": state["research_question"],
            "json_schema": state["desired_format"]
        })
        state["answer"] = json.loads(result)["answer"]
        return state
    
    workflow.add_node("discover", discover_pages)
    workflow.add_node("scrape", scrape_pages)
    workflow.add_node("analyze", answer_questions)
    
    workflow.set_entry_point("discover")
    workflow.add_edge("discover", "scrape")
    workflow.add_edge("scrape", "analyze")
    workflow.add_edge("analyze", END)
    
    return workflow.compile()

# Den Agenten verwenden
agent = create_research_agent()
result = agent.invoke({
    "target_url": "https://store.com",
    "research_question": "What are the top 5 most expensive products?",
    "desired_format": {
        "products": [{"name": "", "price": "", "url": ""}]
    }
})

Erweiterte Anwendungsfälle

Datenanreicherung

Tabellendaten mit Webinformationen anreichern:
from langchain_olostep import answer_question

companies = ["Stripe", "Shopify", "Square"]

for company in companies:
    result = answer_question.invoke({
        "task": f"Find information about {company}",
        "json_schema": {
            "ceo": "",
            "headquarters": "",
            "employee_count": "",
            "latest_funding": ""
        }
    })
    print(f"{company}: {result}")

E-Commerce-Produktscraping

Produktdaten mit spezialisierten Parsern scrapen:
from langchain_olostep import scrape_website

# Amazon-Produkt scrapen
result = scrape_website.invoke({
    "url": "https://www.amazon.com/dp/PRODUCT_ID",
    "parser": "@olostep/amazon-product",
    "format": "json"
})
# Gibt strukturierte Produktdaten zurück: Preis, Titel, Bewertung usw.

SEO-Audit

Gesamte Websites für SEO analysieren:
from langchain_olostep import extract_urls, scrape_batch
import json

# 1. Alle Seiten entdecken
urls_result = extract_urls.invoke({
    "url": "https://yoursite.com",
    "top_n": 1000
})

# 2. Alle Seiten scrapen
urls = json.loads(urls_result)["urls"]
batch_result = scrape_batch.invoke({
    "urls": urls,
    "format": "html"
})

Dokumentationsscraping

Dokumentation crawlen und extrahieren:
from langchain_olostep import crawl_website

# Gesamte Dokumentationsseite crawlen
result = crawl_website.invoke({
    "start_url": "https://docs.example.com",
    "max_pages": 500,
    "include_urls": ["/docs/**"],
    "exclude_urls": ["/api/**", "/v1/**"]
})

Spezialisierte Parser

Olostep bietet vorgefertigte Parser für beliebte Websites:
  • @olostep/google-search - Google-Suchergebnisse
Verwende sie mit dem parser-Parameter:
scrape_website.invoke({
    "url": "https://www.google.com/search?q=alexander+the+great&gl=us&hl=en",
    "parser": "@olostep/google-search"
})

Fehlerbehandlung

from langchain_core.exceptions import LangChainException

try:
    result = await scrape_website.ainvoke({
        "url": "https://example.com"
    })
except LangChainException as e:
    print(f"Scraping failed: {e}")

Beste Praktiken

Wenn du mehr als 3-5 URLs scrapen möchtest, verwende scrape_batch anstelle mehrerer scrape_website-Aufrufe. Die Batchverarbeitung ist viel schneller und kostengünstiger.
Für JavaScript-lastige Seiten verwende den Parameter wait_before_scraping (2000-5000ms ist typisch). Dies stellt sicher, dass dynamische Inhalte vollständig geladen sind.
Für beliebte Websites (Amazon, LinkedIn, Google) verwende unsere vorgefertigten Parser, um automatisch strukturierte Daten zu erhalten.
Verwende beim Einsatz von extract_urls oder crawl_website Glob-Muster, um sich auf relevante Seiten zu konzentrieren und unnötige Verarbeitung zu vermeiden.
Implementiere exponentielles Backoff für Rate-Limit-Fehler. Die API behandelt die meisten Rate-Limitierungen intern automatisch.

Support

Verwandte Ressourcen

Scrapes API

Erfahre mehr über den Scrapes-Endpunkt

Batches API

Erfahre mehr über den Batches-Endpunkt

Answers API

Erfahre mehr über den Answers-Endpunkt

Maps API

Erfahre mehr über den Maps-Endpunkt

Crawls API

Erfahre mehr über den Crawls-Endpunkt

Python SDK

Erkunde das Python SDK

LangChain Website

LangChain-Plattform