Vai al contenuto principale
L’integrazione Olostep LangChain fornisce strumenti completi per costruire agenti AI che possono cercare, estrarre, analizzare e strutturare dati da qualsiasi sito web. Perfetto per applicazioni LangChain e LangGraph.

Caratteristiche

L’integrazione fornisce accesso a tutte le 5 capacità dell’API Olostep:

Scrapes

Estrai contenuti da qualsiasi singolo URL in più formati (Markdown, HTML, JSON, testo)

Batches

Elabora fino a 10.000 URL in parallelo. I lavori batch si completano in 5-8 minuti

Answers

Ricerca web potenziata dall’AI con query in linguaggio naturale e output strutturato

Maps

Estrai tutti gli URL da un sito web per l’analisi della struttura del sito

Crawls

Scopri ed estrai autonomamente interi siti web seguendo i link

Installazione

pip install langchain-olostep

Configurazione

Imposta la tua chiave API Olostep come variabile d’ambiente:
export OLOSTEP_API_KEY="your_olostep_api_key_here"
Ottieni la tua chiave API dalla Dashboard di Olostep.

Strumenti Disponibili

scrape_website

Estrai contenuti da un singolo URL. Supporta più formati e il rendering JavaScript.
url
string
obbligatorio
URL del sito web da estrarre (deve includere http:// o https://)
format
string
predefinito:"markdown"
Formato di output: markdown, html, json, o text
country
string
Codice del paese per contenuti specifici della località (es. “US”, “GB”, “CA”)
wait_before_scraping
integer
Tempo di attesa in millisecondi per il rendering JavaScript (0-10000)
parser
string
ID parser opzionale per estrazione specializzata (es. “@olostep/amazon-product”)
from langchain_olostep import scrape_website
import asyncio

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

print(content)

scrape_batch

Elabora più URL in parallelo (fino a 10.000 contemporaneamente).
urls
array
obbligatorio
Elenco di URL da estrarre
format
string
predefinito:"markdown"
Formato di output per tutti gli URL: markdown, html, json, o text
country
string
Codice del paese per contenuti specifici della località
wait_before_scraping
integer
Tempo di attesa in millisecondi per il rendering JavaScript
parser
string
ID parser opzionale per estrazione specializzata
from langchain_olostep import scrape_batch
import asyncio

# Estrai più URL
result = asyncio.run(scrape_batch.ainvoke({
    "urls": [
        "https://example1.com",
        "https://example2.com",
        "https://example3.com"
    ],
    "format": "markdown"
}))

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

answer_question

Cerca sul web e ottieni risposte potenziate dall’AI con fonti. Perfetto per arricchimento dati e ricerca.
task
string
obbligatorio
Domanda o compito da cercare
json_schema
object
Dizionario/stringa schema JSON opzionale che descrive il formato di output desiderato
from langchain_olostep import answer_question
import asyncio

# Fai una domanda semplice
result = asyncio.run(answer_question.ainvoke({
    "task": "What is the capital of France?"
}))

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

extract_urls

Estrai tutti gli URL da un sito web per l’analisi della struttura del sito.
url
string
obbligatorio
URL del sito web da cui estrarre gli URL
search_query
string
Query di ricerca opzionale per filtrare gli URL
top_n
integer
Limita il numero di URL restituiti
include_urls
array
Modelli glob da includere (es. [“/blog/**”])
exclude_urls
array
Modelli glob da escludere (es. [“/admin/**”])
from langchain_olostep import extract_urls
import asyncio

# Ottieni tutti gli URL da un sito web
result = asyncio.run(extract_urls.ainvoke({
    "url": "https://example.com",
    "top_n": 100
}))

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

crawl_website

Scopri ed estrai autonomamente interi siti web seguendo i link.
start_url
string
obbligatorio
URL di partenza per il crawl
max_pages
integer
predefinito:"100"
Numero massimo di pagine da esplorare
include_urls
array
Modelli glob da includere (es. [”/**”] per tutti)
exclude_urls
array
Modelli glob da escludere (es. [“/admin/**”])
max_depth
integer
Profondità massima da esplorare a partire da start_url
include_external
boolean
predefinito:"false"
Includi URL esterni
from langchain_olostep import crawl_website
import asyncio

# Esplora intero sito di documentazione
result = asyncio.run(crawl_website.ainvoke({
    "start_url": "https://docs.example.com",
    "max_pages": 100
}))

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

Integrazione Agente LangChain

Crea agenti intelligenti che possono cercare ed estrarre dal web:
from langchain.agents import initialize_agent, AgentType
from langchain_openai import ChatOpenAI
from langchain_olostep import (
    scrape_website,
    answer_question,
    extract_urls
)

# Crea agente con strumenti 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
)

# Usa l'agente
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)

Integrazione LangGraph

Crea flussi di lavoro complessi a più fasi con 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):
        # Estrai tutti gli URL dal sito target
        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):
        # Estrai le pagine scoperte 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):
        # Usa l'AI per rispondere a domande sui dati
        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()

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

Casi d’Uso Avanzati

Arricchimento Dati

Arricchisci dati di fogli di calcolo con informazioni 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 Prodotti E-commerce

Estrai dati di prodotti con parser specializzati:
from langchain_olostep import scrape_website

# Estrai prodotto Amazon
result = scrape_website.invoke({
    "url": "https://www.amazon.com/dp/PRODUCT_ID",
    "parser": "@olostep/amazon-product",
    "format": "json"
})
# Restituisce dati strutturati del prodotto: prezzo, titolo, valutazione, ecc.

Audit SEO

Analizza interi siti web per SEO:
from langchain_olostep import extract_urls, scrape_batch
import json

# 1. Scopri tutte le pagine
urls_result = extract_urls.invoke({
    "url": "https://yoursite.com",
    "top_n": 1000
})

# 2. Estrai tutte le pagine
urls = json.loads(urls_result)["urls"]
batch_result = scrape_batch.invoke({
    "urls": urls,
    "format": "html"
})

Scraping Documentazione

Esplora ed estrai documentazione:
from langchain_olostep import crawl_website

# Esplora intero sito di documentazione
result = crawl_website.invoke({
    "start_url": "https://docs.example.com",
    "max_pages": 500,
    "include_urls": ["/docs/**"],
    "exclude_urls": ["/api/**", "/v1/**"]
})

Parser Specializzati

Olostep fornisce parser pre-costruiti per siti web popolari:
  • @olostep/google-search - Risultati di ricerca Google
Usali con il parametro parser:
scrape_website.invoke({
    "url": "https://www.google.com/search?q=alexander+the+great&gl=us&hl=en",
    "parser": "@olostep/google-search"
})

Gestione degli Errori

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

Migliori Pratiche

Quando estrai più di 3-5 URL, usa scrape_batch invece di più chiamate scrape_website. Il batch processing è molto più veloce ed economico.
Per siti pesanti di JavaScript, usa il parametro wait_before_scraping (2000-5000ms è tipico). Questo assicura che il contenuto dinamico sia completamente caricato.
Per siti web popolari (Amazon, LinkedIn, Google), usa i nostri parser pre-costruiti per ottenere dati strutturati automaticamente.
Quando usi extract_urls o crawl_website, usa modelli glob per concentrarti sulle pagine rilevanti ed evitare elaborazioni inutili.
Implementa il backoff esponenziale per errori di limite di frequenza. L’API gestisce automaticamente la maggior parte dei limiti di frequenza internamente.

Supporto

Risorse Correlate

Scrapes API

Scopri l’endpoint Scrapes

Batches API

Scopri l’endpoint Batches

Answers API

Scopri l’endpoint Answers

Maps API

Scopri l’endpoint Maps

Crawls API

Scopri l’endpoint Crawls

Python SDK

Esplora l’SDK Python

LangChain Website

Piattaforma LangChain