Vai al contenuto principale

Documentation Index

Fetch the complete documentation index at: https://docs.olostep.com/llms.txt

Use this file to discover all available pages before exploring further.

Attraverso l’endpoint /v1/scrapes di Olostep puoi estrarre Markdown, HTML, testo, screenshot o JSON strutturato da qualsiasi URL in tempo reale.
  • Produce markdown pulito, dati strutturati, screenshot o HTML
  • Estrai JSON tramite Parser o estrazione LLM
  • Gestisce contenuti dinamici: siti con rendering JS, flussi di login tramite azioni, PDF
Per i dettagli sull’API consulta la Riferimento API dell’Endpoint Scrape.

Scraping di un URL

Usa l’endpoint /v1/scrapes per eseguire lo scraping di un singolo URL e scegliere i formati di output.

Installazione

pip install olostep

Utilizzo

Puoi usare l’endpoint per eseguire lo scraping di un singolo URL e scegliere i formati di output. I parametri obbligatori sono url_to_scrape e formats. Altri parametri comuni sono wait_before_scraping (in millisecondi), remove_css_selectors (default, nessuno, o un array di selettori), e country.
from olostep import Olostep

client = Olostep(api_key="YOUR_REAL_KEY")

result = client.scrapes.create(
    url_to_scrape="https://en.wikipedia.org/wiki/Alexander_the_Great",
    formats=["markdown", "html"],
)

print(result.markdown_content)
print(result.html_content)

Risposta

L’API restituisce un oggetto scrape in risposta. Lo scrape ha alcune proprietà come id e result. L’oggetto result ha i seguenti campi (secondo il parametro formats alcuni potrebbero essere nulli):
  • html_content: il contenuto HTML della pagina. Passa formats: ["html"] per ottenerlo.
  • markdown_content: il contenuto MD della pagina. Passa formats: ["markdown"] per ottenerlo.
  • text_content: il contenuto testuale della pagina. Passa formats: ["text"] per ottenerlo.
  • json_content: il contenuto JSON della pagina. Passa formats: ["json"] per ottenerlo e fornisci anche un parametro parser o llm_extract.
  • screenshot_hosted_url: l’URL ospitato dello screenshot.
  • html_hosted_url: l’URL ospitato del contenuto HTML
  • markdown_hosted_url: l’URL ospitato del contenuto Markdown
  • json_hosted_url: l’URL ospitato del contenuto JSON
  • text_hosted_url: l’URL ospitato del contenuto testuale
  • links_on_page: i link sulla pagina
  • page_metadata: i metadati della pagina
{
  "id": "scrape_6h89o8u1kt",
  "object": "scrape",
  "created": 1745673871,
  "metadata": {},
  "retrieve_id": "6h89o8u1kt",
  "url_to_scrape": "https://en.wikipedia.org/wiki/Alexander_the_Great",
  "result": {
    "html_content": "<html...",
    "markdown_content": "## Alexander the Great...",
    "text_content": null,
    "json_content": null,
    "screenshot_hosted_url": null,
    "html_hosted_url": "https://olostep-storage.s3.us-east-1.amazonaws.com/text_6h89o8u1kt.txt",
    "markdown_hosted_url": "https://olostep-storage.s3.us-east-1.amazonaws.com/markDown_6h89o8u1kt.txt",
    "json_hosted_url": null,
    "text_hosted_url": null,
    "links_on_page": [],
    "page_metadata": { "status_code": 200, "title": "" }
  }
}

Formati di Scrape

Scegli uno o più formati di output tramite formats:
  • markdown: markdown compatibile con LLM
  • html: HTML pulito
  • text: testo semplice
  • json: output strutturato (tramite parser o llm_extract)
  • raw_pdf: byte PDF grezzi estratti a un URL ospitato
  • screenshot: impostato tramite azioni per catturare uno screenshot e restituire un URL ospitato
Le chiavi di output sono restituite all’interno di result come campi *_content e anche un *_hosted_url.

Estrazione di dati strutturati

Puoi estrarre JSON strutturato in due modi: usando i Parser o l’estrazione LLM.

Usare un Parser (consigliato per la scalabilità)

Definisci formats: ["json"] e fornisci un id del parser.
from olostep import Olostep

client = Olostep(api_key="YOUR_REAL_KEY")

result = client.scrapes.create(
    url_to_scrape="https://www.google.com/search?q=alexander+the+great&gl=us&hl=en",
    formats=["json"],
    parser="@olostep/google-search",
)

print(result.json_content)
Olostep ha alcuni parser predefiniti per siti web popolari ma puoi anche creare i tuoi parser tramite la dashboard o chiedere al nostro team di farlo per te. I parser sono auto-riparanti e si aggiorneranno all’ultima versione del sito web.

Usare l’estrazione LLM (schema e/o prompt)

Fornisci llm_extract con uno Schema JSON (schema) e/o un’istruzione in linguaggio naturale (prompt). Puoi passare entrambi i parametri, ma se entrambi sono forniti, schema ha la precedenza. In alternativa, se passi solo un prompt, l’LLM estrarrà i dati basandosi sul prompt e deciderà autonomamente la struttura dei dati.
from olostep import LLMExtract, Olostep

client = Olostep(api_key="YOUR_REAL_KEY")

result = client.scrapes.create(
    url_to_scrape="https://www.berklee.edu/events/stefano-marchese-friends",
    formats=["markdown", "json"],
    llm_extract=LLMExtract(
        schema={
            "event": {
                "type": "object",
                "properties": {
                    "title": {"type": "string"},
                    "date": {"type": "string"},
                    "description": {"type": "string"},
                    "venue": {"type": "string"},
                    "address": {"type": "string"},
                    "start_time": {"type": "string"},
                },
            }
        }
    ),
)

print(result.json_content)
Nota: result.json_content restituisce un JSON sotto forma di stringa. Analizzalo nel tuo codice se hai bisogno di un oggetto.

Interagire con la pagina tramite Azioni

Esegui azioni prima dello scraping per interagire con siti dinamici. Azioni supportate:
  • wait con milliseconds
  • click con selector
  • fill_input con selector e value
  • scroll con direction e amount
È spesso utile usare wait prima/dopo altre azioni per permettere il caricamento della pagina.

Esempio

from olostep import FillInputAction, Olostep, WaitAction

client = Olostep(api_key="YOUR_REAL_KEY")

result = client.scrapes.create(
    url_to_scrape="https://example.com/login",
    formats=["markdown"],
    actions=[
        FillInputAction(selector="input[type=email]", value="john@example.com"),
        WaitAction(milliseconds=500),
        FillInputAction(selector="input[type=password]", value="secret"),
        {"type": "click", "selector": "button[type=\"submit\"]"},
        WaitAction(milliseconds=1500),
    ],
)

print(result.markdown_content)
La risposta includerà qualsiasi formato richiesto (ad esempio, markdown_content).

Casi d’Uso

Di seguito sono riportate alcune applicazioni pratiche dei clienti che utilizzano l’endpoint /scrapes.

Analisi dei Contenuti & Ricerca

  • Analisi Competitiva: Estrai dettagli sui prodotti, prezzi e caratteristiche dai siti web dei concorrenti
  • Ricerca di Mercato: Analizza landing page, descrizioni dei prodotti e testimonianze dei clienti
  • Ricerca Accademica: Raccogli dati specifici da pubblicazioni scientifiche o portali di ricerca
  • Documentazione Legale: Estrai studi di casi, regolamenti o precedenti legali da siti ufficiali

E-commerce & Retail

  • Strategie di Prezzi Dinamici: Ottieni prezzi dei prodotti in tempo reale dai negozi concorrenti
  • Gestione delle Informazioni sui Prodotti: Estrai specifiche dettagliate e descrizioni
  • Monitoraggio Stock/Inventario: Controlla la disponibilità dei prodotti presso altri rivenditori
  • Analisi delle Recensioni: Raccogli feedback e sentiment dei consumatori per prodotti specifici

Marketing & Creazione di Contenuti

  • Curazione di Contenuti: Estrai articoli e post di blog rilevanti per newsletter
  • Analisi SEO: Esamina l’uso delle parole chiave dei concorrenti, le meta descrizioni e la struttura delle pagine
  • Generazione di Lead: Estrai informazioni di contatto da directory aziendali o pagine aziendali
  • Ricerca Influencer: Raccogli metriche di coinvolgimento e stili di contenuto dai profili degli influencer
  • Generazione Social Media Personalizzata: Crea marketing sui social media alimentato da AI analizzando i siti web dei clienti

Applicazioni di Dati

  • Raccolta Dati per Addestramento AI: Raccogli esempi specifici per modelli di machine learning
  • Costruzione di Basi di Conoscenza Personalizzate: Estrai documentazione o istruzioni da siti software
  • Archivi di Dati Storici: Conserva il contenuto del sito web in momenti specifici nel tempo
  • Estrazione di Dati Strutturati: Trasforma il contenuto web in dataset formattati per l’analisi

Monitoraggio & Avvisi

  • Monitoraggio della Conformità Normativa: Traccia le modifiche ai siti web legali o normativi
  • Gestione delle Crisi: Monitora i siti di notizie per menzioni di eventi o organizzazioni specifiche
  • Tracciamento degli Eventi: Estrai dettagli su eventi imminenti da siti di luoghi o organizzatori
  • Monitoraggio dello Stato del Servizio: Controlla le pagine di stato del servizio per piattaforme o strumenti specifici

Editoria & Media

  • Aggregazione di Notizie: Estrai notizie dell’ultima ora da fonti ufficiali
  • Monitoraggio dei Media: Traccia argomenti specifici su siti di notizie
  • Verifica dei Contenuti: Estrai informazioni per verificare affermazioni o dichiarazioni
  • Estrazione Multimediale: Raccogli video, immagini o audio incorporati per librerie multimediali

Applicazioni Finanziarie

  • Ricerca di Investimenti: Estrai bilanci o rapporti annuali dai siti web delle aziende
  • Indicatori Economici: Raccogli dati economici da siti governativi o di istituzioni finanziarie
  • Dati sulle Criptovalute: Estrai informazioni sui prezzi in tempo reale e sulla capitalizzazione di mercato
  • Analisi delle Notizie Finanziarie: Monitora i siti di notizie finanziarie per segnali di mercato specifici

Applicazioni Tecniche

  • Estrazione di Documentazione API: Raccogli documentazione tecnica per riferimento
  • Test di Integrazione: Estrai elementi del sito web per verificare le integrazioni di terze parti
  • Test di Accessibilità: Analizza la struttura del sito web per la conformità agli standard di accessibilità
  • Creazione di Archivi Web: Cattura il contenuto completo del sito web per la conservazione storica

Scenari di Integrazione

  • Sistemi CRM: Migliora i profili dei clienti con dati da siti aziendali o Linkedin
  • Sistemi di Gestione dei Contenuti: Importa contenuti esterni rilevanti
  • Strumenti di Business Intelligence: Integra dati interni con informazioni di mercato esterne
  • Software di Gestione Progetti: Estrai specifiche o requisiti dai siti web dei clienti
  • Dashboard Personalizzati: Visualizza i dati estratti insieme a metriche interne

Gestione degli Errori

Tutti gli errori seguono una struttura comune. Controlla error.type e error.code per gestire programmaticamente:
{
  "id": "error_abc123",
  "object": "error",
  "created": 1745673871,
  "url": "https://example.com",
  "metadata": {},
  "error": {
    "type": "...",
    "code": "...",
    "message": "..."
  }
}
HTTPerror.typeerror.codeSignificato
400invalid_request_errordns_resolution_failedIl dominio non esiste o l’URL contiene un errore di battitura.
400invalid_request_errorinvalid_urlL’URL è malformato.
502invalid_request_errortls_errorIl sito web ha un certificato TLS/SSL non valido o incompatibile. error.detail contiene il codice SSL di basso livello.
504request_timeoutscrape_poll_timeoutLo scraping non è stato completato entro il limite di attesa di ~55 secondi.

Errore DNS (400)

Il dominio non si risolve. Controlla l’URL per errori di battitura.
{
  "error": {
    "type": "invalid_request_error",
    "code": "dns_resolution_failed",
    "message": "L'URL contiene un errore di battitura o il dominio non esiste."
  }
}

Errore TLS/SSL (502)

Il sito web di destinazione ha una configurazione HTTPS rotta o incompatibile. error.detail fornisce il codice di errore SSL specifico per la diagnostica; error.code è sempre tls_error.
{
  "error": {
    "type": "invalid_request_error",
    "code": "tls_error",
    "detail": "err_ssl_tlsv1_alert_internal_error",
    "message": "Il sito web ha chiuso o rifiutato la stretta di mano TLS. Il server potrebbe essere configurato male o utilizzare una versione SSL/TLS non supportata."
  }
}

Timeout della Richiesta (504)

Lo scraping non è stato completato entro il limite di attesa. La pagina potrebbe essere lenta, protetta da bot o temporaneamente non disponibile. Questa risposta è sicura da riprovare.
{
  "error": {
    "type": "request_timeout",
    "code": "scrape_poll_timeout",
    "message": "Richiesta scaduta in attesa del risultato dello scraping. La pagina potrebbe essere lenta, bloccata per i nostri fetcher o temporaneamente non disponibile."
  }
}

Prezzi

Lo scraping costa 1 credito di default. Se passi anche parser, i costi variano a seconda del parser (1-5 crediti). Se usi LLM extract, costa 20 crediti.