Passer au contenu principal
L’intégration Olostep LangChain fournit des outils complets pour construire des agents IA capables de rechercher, scraper, analyser et structurer des données à partir de n’importe quel site web. Parfait pour les applications LangChain et LangGraph.

Fonctionnalités

L’intégration donne accès aux 5 capacités de l’API Olostep :

Scrapes

Extraire le contenu de n’importe quelle URL unique dans plusieurs formats (Markdown, HTML, JSON, texte)

Batches

Traiter jusqu’à 10 000 URLs en parallèle. Les travaux par lots se terminent en 5-8 minutes

Answers

Recherche web alimentée par l’IA avec des requêtes en langage naturel et des résultats structurés

Maps

Extraire toutes les URLs d’un site web pour l’analyse de la structure du site

Crawls

Découvrir et scraper de manière autonome des sites web entiers en suivant les liens

Installation

pip install langchain-olostep

Configuration

Définissez votre clé API Olostep comme une variable d’environnement :
export OLOSTEP_API_KEY="your_olostep_api_key_here"
Obtenez votre clé API depuis le Tableau de bord Olostep.

Outils Disponibles

scrape_website

Extraire le contenu d’une URL unique. Prend en charge plusieurs formats et le rendu JavaScript.
url
string
requis
URL du site web à scraper (doit inclure http:// ou https://)
format
string
défaut:"markdown"
Format de sortie : markdown, html, json, ou text
country
string
Code du pays pour le contenu spécifique à une localisation (par ex., “US”, “GB”, “CA”)
wait_before_scraping
integer
Temps d’attente en millisecondes pour le rendu JavaScript (0-10000)
parser
string
ID de parseur optionnel pour une extraction spécialisée (par ex., “@olostep/amazon-product”)
from langchain_olostep import scrape_website
import asyncio

# Scraper un site web
content = asyncio.run(scrape_website.ainvoke({
    "url": "https://example.com",
    "format": "markdown"
}))

print(content)

scrape_batch

Traiter plusieurs URLs en parallèle (jusqu’à 10 000 à la fois).
urls
array
requis
Liste des URLs à scraper
format
string
défaut:"markdown"
Format de sortie pour toutes les URLs : markdown, html, json, ou text
country
string
Code du pays pour le contenu spécifique à une localisation
wait_before_scraping
integer
Temps d’attente en millisecondes pour le rendu JavaScript
parser
string
ID de parseur optionnel pour une extraction spécialisée
from langchain_olostep import scrape_batch
import asyncio

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

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

answer_question

Rechercher sur le web et obtenir des réponses alimentées par l’IA avec des sources. Parfait pour l’enrichissement de données et la recherche.
task
string
requis
Question ou tâche à rechercher
json_schema
object
Dictionnaire/chaîne JSON optionnel décrivant le format de sortie souhaité
from langchain_olostep import answer_question
import asyncio

# Poser une question simple
result = asyncio.run(answer_question.ainvoke({
    "task": "What is the capital of France?"
}))

print(result)
# Renvoie : {"answer": {"result": "Paris"}, "sources": [...]}

extract_urls

Extraire toutes les URLs d’un site web pour l’analyse de la structure du site.
url
string
requis
URL du site web pour extraire les URLs
search_query
string
Requête de recherche optionnelle pour filtrer les URLs
top_n
integer
Limiter le nombre d’URLs retournées
include_urls
array
Modèles globaux à inclure (par ex., [“/blog/**”])
exclude_urls
array
Modèles globaux à exclure (par ex., [“/admin/**”])
from langchain_olostep import extract_urls
import asyncio

# Obtenir toutes les URLs d'un site web
result = asyncio.run(extract_urls.ainvoke({
    "url": "https://example.com",
    "top_n": 100
}))

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

crawl_website

Découvrir et scraper de manière autonome des sites web entiers en suivant les liens.
start_url
string
requis
URL de départ pour le crawl
max_pages
integer
défaut:"100"
Nombre maximum de pages à crawler
include_urls
array
Modèles globaux à inclure (par ex., [”/**”] pour tout)
exclude_urls
array
Modèles globaux à exclure (par ex., [“/admin/**”])
max_depth
integer
Profondeur maximale à crawler depuis start_url
include_external
boolean
défaut:"false"
Inclure les URLs externes
from langchain_olostep import crawl_website
import asyncio

# Crawler l'ensemble du site de documentation
result = asyncio.run(crawl_website.ainvoke({
    "start_url": "https://docs.example.com",
    "max_pages": 100
}))

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

Intégration de l’Agent LangChain

Construisez des agents intelligents capables de rechercher et scraper le web :
from langchain.agents import initialize_agent, AgentType
from langchain_openai import ChatOpenAI
from langchain_olostep import (
    scrape_website,
    answer_question,
    extract_urls
)

# Créer un agent avec les outils Olostep
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
)

# Utiliser l'agent
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)

Intégration LangGraph

Construisez des workflows complexes en plusieurs étapes avec 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):
        # Extraire toutes les URLs du site cible
        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):
        # Scraper les pages découvertes en lot
        result = scrape_batch.invoke({
            "urls": state["urls"],
            "format": "markdown"
        })
        state["batch_id"] = json.loads(result)["batch_id"]
        return state
    
    def answer_questions(state):
        # Utiliser l'IA pour répondre aux questions sur les données
        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()

# Utiliser l'agent
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": ""}]
    }
})

Cas d’Utilisation Avancés

Enrichissement de Données

Enrichir les données de feuille de calcul avec des informations web :
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}")

Scraping de Produits E-commerce

Scraper les données de produits avec des parseurs spécialisés :
from langchain_olostep import scrape_website

# Scraper un produit Amazon
result = scrape_website.invoke({
    "url": "https://www.amazon.com/dp/PRODUCT_ID",
    "parser": "@olostep/amazon-product",
    "format": "json"
})
# Renvoie des données de produit structurées : prix, titre, évaluation, etc.

Audit SEO

Analyser des sites web entiers pour le SEO :
from langchain_olostep import extract_urls, scrape_batch
import json

# 1. Découvrir toutes les pages
urls_result = extract_urls.invoke({
    "url": "https://yoursite.com",
    "top_n": 1000
})

# 2. Scraper toutes les pages
urls = json.loads(urls_result)["urls"]
batch_result = scrape_batch.invoke({
    "urls": urls,
    "format": "html"
})

Scraping de Documentation

Crawler et extraire de la documentation :
from langchain_olostep import crawl_website

# Crawler l'ensemble du site de documentation
result = crawl_website.invoke({
    "start_url": "https://docs.example.com",
    "max_pages": 500,
    "include_urls": ["/docs/**"],
    "exclude_urls": ["/api/**", "/v1/**"]
})

Parseurs Spécialisés

Olostep fournit des parseurs pré-construits pour les sites web populaires :
  • @olostep/google-search - Résultats de recherche Google
Utilisez-les avec le paramètre parser :
scrape_website.invoke({
    "url": "https://www.google.com/search?q=alexander+the+great&gl=us&hl=en",
    "parser": "@olostep/google-search"
})

Gestion des Erreurs

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}")

Bonnes Pratiques

Lorsque vous scrapez plus de 3-5 URLs, utilisez scrape_batch au lieu de plusieurs appels scrape_website. Le traitement par lots est beaucoup plus rapide et plus économique.
Pour les sites riches en JavaScript, utilisez le paramètre wait_before_scraping (2000-5000ms est typique). Cela garantit que le contenu dynamique est entièrement chargé.
Pour les sites web populaires (Amazon, LinkedIn, Google), utilisez nos parseurs pré-construits pour obtenir automatiquement des données structurées.
Lors de l’utilisation de extract_urls ou crawl_website, utilisez des modèles globaux pour vous concentrer sur les pages pertinentes et éviter un traitement inutile.
Implémentez un backoff exponentiel pour les erreurs de limite de taux. L’API gère automatiquement la plupart des limitations de taux en interne.

Support

Ressources Connexes

Scrapes API

En savoir plus sur l’endpoint Scrapes

Batches API

En savoir plus sur l’endpoint Batches

Answers API

En savoir plus sur l’endpoint Answers

Maps API

En savoir plus sur l’endpoint Maps

Crawls API

En savoir plus sur l’endpoint Crawls

SDK Python

Explorer le SDK Python

Site Web LangChain

Plateforme LangChain