Naar hoofdinhoud gaan
De Olostep LangChain-integratie biedt uitgebreide tools om AI-agenten te bouwen die data van elke website kunnen doorzoeken, scrapen, analyseren en structureren. Perfect voor LangChain- en LangGraph-toepassingen.

Functies

De integratie biedt toegang tot alle 5 Olostep API-mogelijkheden:

Scrapes

Haal inhoud op van elke enkele URL in meerdere formaten (Markdown, HTML, JSON, tekst)

Batches

Verwerk tot 10.000 URL’s parallel. Batchtaken worden voltooid in 5-8 minuten

Answers

AI-gestuurde webzoekopdrachten met natuurlijke taalvragen en gestructureerde output

Maps

Haal alle URL’s van een website op voor analyse van de sitestructuur

Crawls

Ontdek en scrape zelfstandig volledige websites door links te volgen

Installatie

pip install langchain-olostep

Setup

Stel je Olostep API-sleutel in als een omgevingsvariabele:
export OLOSTEP_API_KEY="your_olostep_api_key_here"
Verkrijg je API-sleutel van het Olostep Dashboard.

Beschikbare Tools

scrape_website

Haal inhoud op van een enkele URL. Ondersteunt meerdere formaten en JavaScript-rendering.
url
string
vereist
Website-URL om te scrapen (moet http:// of https:// bevatten)
format
string
standaard:"markdown"
Outputformaat: markdown, html, json, of text
country
string
Landcode voor locatie-specifieke inhoud (bijv. “US”, “GB”, “CA”)
wait_before_scraping
integer
Wachttijd in milliseconden voor JavaScript-rendering (0-10000)
parser
string
Optionele parser-ID voor gespecialiseerde extractie (bijv. “@olostep/amazon-product”)
from langchain_olostep import scrape_website
import asyncio

# Scrape een website
content = asyncio.run(scrape_website.ainvoke({
    "url": "https://example.com",
    "format": "markdown"
}))

print(content)

scrape_batch

Verwerk meerdere URL’s parallel (tot 10.000 tegelijk).
urls
array
vereist
Lijst van URL’s om te scrapen
format
string
standaard:"markdown"
Outputformaat voor alle URL’s: markdown, html, json, of text
country
string
Landcode voor locatie-specifieke inhoud
wait_before_scraping
integer
Wachttijd in milliseconden voor JavaScript-rendering
parser
string
Optionele parser-ID voor gespecialiseerde extractie
from langchain_olostep import scrape_batch
import asyncio

# Scrape meerdere URL's
result = asyncio.run(scrape_batch.ainvoke({
    "urls": [
        "https://example1.com",
        "https://example2.com",
        "https://example3.com"
    ],
    "format": "markdown"
}))

print(result)
# Geeft terug: {"batch_id": "batch_xxx", "status": "in_progress", ...}

answer_question

Doorzoek het web en krijg AI-gestuurde antwoorden met bronnen. Perfect voor data verrijking en onderzoek.
task
string
vereist
Vraag of taak om naar te zoeken
json_schema
object
Optioneel JSON-schema dict/string dat het gewenste outputformaat beschrijft
from langchain_olostep import answer_question
import asyncio

# Stel een eenvoudige vraag
result = asyncio.run(answer_question.ainvoke({
    "task": "Wat is de hoofdstad van Frankrijk?"
}))

print(result)
# Geeft terug: {"answer": {"result": "Parijs"}, "sources": [...]}

extract_urls

Haal alle URL’s van een website op voor analyse van de sitestructuur.
url
string
vereist
Website-URL om URL’s van op te halen
search_query
string
Optionele zoekopdracht om URL’s te filteren
top_n
integer
Beperk het aantal geretourneerde URL’s
include_urls
array
Glob-patronen om op te nemen (bijv. [“/blog/**”])
exclude_urls
array
Glob-patronen om uit te sluiten (bijv. [“/admin/**”])
from langchain_olostep import extract_urls
import asyncio

# Haal alle URL's van een website op
result = asyncio.run(extract_urls.ainvoke({
    "url": "https://example.com",
    "top_n": 100
}))

print(result)
# Geeft terug: {"urls": [...], "total_urls": 100, ...}

crawl_website

Ontdek en scrape zelfstandig volledige websites door links te volgen.
start_url
string
vereist
Start-URL voor de crawl
max_pages
integer
standaard:"100"
Maximum aantal pagina’s om te crawlen
include_urls
array
Glob-patronen om op te nemen (bijv. [”/**”] voor alles)
exclude_urls
array
Glob-patronen om uit te sluiten (bijv. [“/admin/**”])
max_depth
integer
Maximale diepte om te crawlen vanaf start_url
include_external
boolean
standaard:"false"
Inclusief externe URL’s
from langchain_olostep import crawl_website
import asyncio

# Crawl volledige documentatiesite
result = asyncio.run(crawl_website.ainvoke({
    "start_url": "https://docs.example.com",
    "max_pages": 100
}))

print(result)
# Geeft terug: {"crawl_id": "crawl_xxx", "status": "in_progress", ...}

LangChain Agent Integratie

Bouw intelligente agenten die het web kunnen doorzoeken en scrapen:
from langchain.agents import initialize_agent, AgentType
from langchain_openai import ChatOpenAI
from langchain_olostep import (
    scrape_website,
    answer_question,
    extract_urls
)

# Maak agent met Olostep-tools
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
)

# Gebruik de agent
result = agent.run("""
Onderzoek het bedrijf op https://company.com:
1. Scrape hun over-pagina
2. Zoek naar hun laatste financieringsronde
3. Haal al hun productpagina's op
""")

print(result)

LangGraph Integratie

Bouw complexe multi-step workflows met LangGraph:
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):
        # Haal alle URL's van de doelwebsite op
        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):
        # Scrape ontdekte pagina's in batch
        result = scrape_batch.invoke({
            "urls": state["urls"],
            "format": "markdown"
        })
        state["batch_id"] = json.loads(result)["batch_id"]
        return state
    
    def answer_questions(state):
        # Gebruik AI om vragen over de data te beantwoorden
        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()

# Gebruik de agent
agent = create_research_agent()
result = agent.invoke({
    "target_url": "https://store.com",
    "research_question": "Wat zijn de top 5 duurste producten?",
    "desired_format": {
        "products": [{"name": "", "price": "", "url": ""}]
    }
})

Geavanceerde Gebruiksscenario’s

Data Verrijking

Verrijk spreadsheetgegevens met webinformatie:
from langchain_olostep import answer_question

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

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

E-commerce Product Scraping

Scrape productgegevens met gespecialiseerde parsers:
from langchain_olostep import scrape_website

# Scrape Amazon-product
result = scrape_website.invoke({
    "url": "https://www.amazon.com/dp/PRODUCT_ID",
    "parser": "@olostep/amazon-product",
    "format": "json"
})
# Geeft gestructureerde productgegevens terug: prijs, titel, beoordeling, etc.

SEO Audit

Analyseer volledige websites voor SEO:
from langchain_olostep import extract_urls, scrape_batch
import json

# 1. Ontdek alle pagina's
urls_result = extract_urls.invoke({
    "url": "https://yoursite.com",
    "top_n": 1000
})

# 2. Scrape alle pagina's
urls = json.loads(urls_result)["urls"]
batch_result = scrape_batch.invoke({
    "urls": urls,
    "format": "html"
})

Documentatie Scraping

Crawl en haal documentatie op:
from langchain_olostep import crawl_website

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

Gespecialiseerde Parsers

Olostep biedt vooraf gebouwde parsers voor populaire websites:
  • @olostep/google-search - Google zoekresultaten
Gebruik ze met de parser parameter:
scrape_website.invoke({
    "url": "https://www.google.com/search?q=alexander+the+great&gl=us&hl=en",
    "parser": "@olostep/google-search"
})

Foutafhandeling

from langchain_core.exceptions import LangChainException

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

Beste Praktijken

Wanneer je meer dan 3-5 URL’s scrapt, gebruik scrape_batch in plaats van meerdere scrape_website oproepen. Batchverwerking is veel sneller en kosteneffectiever.
Voor JavaScript-rijke sites, gebruik de wait_before_scraping parameter (2000-5000ms is typisch). Dit zorgt ervoor dat dynamische inhoud volledig is geladen.
Voor populaire websites (Amazon, LinkedIn, Google), gebruik onze vooraf gebouwde parsers om automatisch gestructureerde data te krijgen.
Wanneer je extract_urls of crawl_website gebruikt, gebruik glob-patronen om je te concentreren op relevante pagina’s en onnodige verwerking te vermijden.
Implementeer exponentiële backoff voor rate limit fouten. De API behandelt de meeste rate limiting intern automatisch.

Ondersteuning

Gerelateerde Bronnen

Scrapes API

Leer over de Scrapes endpoint

Batches API

Leer over de Batches endpoint

Answers API

Leer over de Answers endpoint

Maps API

Leer over de Maps endpoint

Crawls API

Leer over de Crawls endpoint

Python SDK

Verken de Python SDK

LangChain Website

LangChain platform