---
seo_title: Reader LlamaIndex per Pagine Web e Indicizzazione di Siti | EnConvert
meta_desc: Installa llama-index-readers-enconvert per convertire pagine web e siti interi in LlamaIndex Documents per la ricerca semantica, con punteggi render_quality.
keywords: reader documenti llamaindex, reader pagina web llamaindex, crawling siti llamaindex, perceive url llamaindex, ingest llamaindex, llama-index-readers-enconvert, indice vettoriale llamaindex, punteggio qualità perceive llamaindex
---

# Reader LlamaIndex per Pagine Web e Indicizzazione di Siti

Il reader EnConvert per [LlamaIndex](https://docs.llamaindex.ai) converte le pagine web e i siti interi in LlamaIndex `Document`s. Percepisci i singoli URL in markdown o esplora un intero sito e restituisci un Document per chunk pronto per l'indicizzazione. Ogni rendering della pagina ha un punteggio `render_quality` (0,0–1,0), quindi una pagina bloccata o vuota è segnalata anziché essere silenziosamente indicizzata.

<div class="alert alert-info">
<strong>Pacchetto:</strong> <code>llama-index-readers-enconvert</code> · <strong>Fonte:</strong> <a href="https://github.com/enconvert/llama-index-readers-enconvert">enconvert/llama-index-readers-enconvert</a> · <strong>Richiede:</strong> <code>llama-index-core>=0.12,<0.15</code> · <strong>Licenza:</strong> MIT
</div>

---

## Installazione

```bash
pip install llama-index-readers-enconvert
```

---

## Aggiungi la tua chiave API

Il reader richiede una credenziale: **Chiave API EnConvert**.

```python
from llama_index.readers.enconvert import EnConvertReader

reader = EnConvertReader(api_key="sk_...")
# Oppure imposta $ENCONVERT_API_KEY e ometti il parametro
reader = EnConvertReader()
```

Genera una chiave API **privata** nel [dashboard](/dashboard/api-keys). Le chiavi private iniziano con `sk_`. Le chiavi pubbliche `pk_` vengono rifiutate.

<div class="alert alert-warning">
<strong>Le chiavi pubbliche non funzioneranno.</strong> Le chiavi che iniziano con <code>pk_</code> sono destinate ai widget del browser e vengono rifiutate dal reader. Scopri di più su <a href="/docs/authentication#private-keys">Private Keys</a>.
</div>

---

## Usa EnConvertReader

Il reader supporta due modalità.

### Percepisci alcuni URL

Converti i singoli URL in `Document`s markdown:

```python
from llama_index.readers.enconvert import EnConvertReader

reader = EnConvertReader(api_key="sk_...")
docs = reader.load_data(urls=["https://example.com", "https://example.com/pricing"])
```

I metadati di ogni Document contengono:
- `url`: l'URL di origine
- `render_quality`: un numero da 0,0 (bloccato/vuoto) a 1,0 (rendering pulito)

### Esplora un sito in chunk

Esplora un intero sito e restituisci un Document per chunk di contenuto, pronto per la ricerca semantica:

```python
from llama_index.readers.enconvert import EnConvertReader

reader = EnConvertReader(api_key="sk_...")
docs = reader.load_data(
    ingest_url="https://docs.example.com",
    mode="sitemap",  # oppure "crawl" oppure "hybrid"
    max_pages=100
)
```

I metadati di ogni Document contengono l'URL `url` specifico del chunk, il titolo e il contesto della sezione. Il reader esegue il polling del lavoro di ingestione fino al completamento, quindi `load_data()` è sincrono.

---

## Costruisci un Indice Vettoriale

Concatena il reader in un archivio vettoriale e una query:

```python
from llama_index.readers.enconvert import EnConvertReader
from llama_index.core import VectorStoreIndex, StorageContext
from llama_index.core.storage.docstore import SimpleDocumentStore
from llama_index.core.vector_stores import SimpleVectorStore

# Carica i documenti
reader = EnConvertReader(api_key="sk_...")
docs = reader.load_data(ingest_url="https://docs.example.com", mode="sitemap")

# Costruisci l'indice
index = VectorStoreIndex.from_documents(docs)

# Query
query_engine = index.as_query_engine()
response = query_engine.query("Come installo questo?")
print(response)
```

---

## Risoluzione dei problemi

**`raise ValueError("Provide either urls or ingest_url, but not both")`**
Hai passato sia `urls=` che `ingest_url=` a `load_data()`. Scegli uno: percepisci i singoli URL o esplora un sito. Passare nessuno genera anche un errore.

**`AuthenticationError: 401 Unauthorized`**
La chiave API è scorretta o mancante. Verifica di aver impostato `api_key="sk_..."` o la variabile di ambiente `$ENCONVERT_API_KEY` su una chiave **privata** (inizia con `sk_`). Le chiavi pubbliche vengono rifiutate immediatamente.

**`Il tempo di caricamento sembra molto lungo.`**
Gli crawl dei siti sono asincroni. Il reader esegue il polling fino al completamento del lavoro, che può richiedere diversi minuti su un sito grande. Esegui il polling diretto dello stato del lavoro tramite `/v2/ingest/{job_id}` oppure usa la variante async (se disponibile).

**`render_quality è molto basso per le pagine che mi aspettavo di leggere correttamente.`**
Un punteggio basso (< 0,5) significa che la pagina è bloccata, vuota o ha JavaScript pesante che non è stato renderizzato in tempo. Controlla l'URL `url` di origine in un browser per vedere cosa fornisce effettivamente la pagina. Se è un'app mono-pagina, un secondo rendering potrebbe avere successo; se è bloccato, non ci sono tentativi.

---

## Fonte e link

- **Fonte**: [enconvert/llama-index-readers-enconvert](https://github.com/enconvert/llama-index-readers-enconvert)
- **Pacchetto**: [PyPI](https://pypi.org/project/llama-index-readers-enconvert)
- **Licenza**: MIT
- **Documentazione LlamaIndex**: [docs.llamaindex.ai](https://docs.llamaindex.ai)
- **API sottostante**: [Introduction](/docs/introduction.md)

---

## Domande frequenti

### Come carico un singolo URL in un Document?

```python
from llama_index.readers.enconvert import EnConvertReader
reader = EnConvertReader(api_key="sk_...")
docs = reader.load_data(urls=["https://example.com"])
```

Il contenuto di ogni Document è il markdown della pagina e i metadati contengono l'URL `url` e il punteggio `render_quality`.

### Come esploro e indicizzo un intero sito?

```python
from llama_index.readers.enconvert import EnConvertReader
from llama_index.core import VectorStoreIndex

reader = EnConvertReader(api_key="sk_...")
docs = reader.load_data(ingest_url="https://docs.example.com", mode="sitemap", max_pages=100)
index = VectorStoreIndex.from_documents(docs)

# Query
engine = index.as_query_engine()
response = engine.query("Cos'è questo?")
```

### Come verifico il render_quality di una pagina prima dell'indicizzazione?

I metadati di ogni Document includono `render_quality`, un punteggio da 0,0 a 1,0. Filtra i documenti di alta qualità prima dell'indicizzazione:

```python
high_quality = [doc for doc in docs if doc.metadata.get('render_quality', 1.0) > 0.5]
index = VectorStoreIndex.from_documents(high_quality)
```

### Posso esplorare più siti?

Sì. Crea un reader per sito e chiama `load_data()` in sequenza o parallelizza le chiamate nel tuo proprio codice async.

### Posso usare questo con altri componenti di LlamaIndex?

Sì. EnConvertReader restituisce LlamaIndex Documents standard, quindi funziona con qualsiasi indice o componente a valle.
