Parser di siti webSviluppo e personalizzazione

Un parser di siti web in Python che raccoglie dati pubblici dalle pagine in CSV o Excel: prezzi, cataloghi, annunci

Di solito pronto in 15 minutiRevisioni incluseControllo di qualità
Pacchetti
Pagamento protettoDettagli
  • Le revisioni previste dal pacchetto sono gratuite.
  • Se non risponde entro 3 giorni dalla consegna, il lavoro viene accettato automaticamente.

Il denaro viene riservato al momento del pagamento e sbloccato solo quando accetta il lavoro.

Un parser di siti web in Python che raccoglie dati pubblici dalle pagine in CSV o Excel: prezzi, cataloghi, annunci

Esempio di risultato

Esempio per il pacchetto Standard

Parser del catalogo di un fornitore di attrezzi da giardino in Excel

Come appare il risultato

ArticoloNomePrezzoDisponibilePesoFoto
GT-1042Forbici da potatura, 20 mm18,90Sì0,24 kg…/gt-1042.jpg
GT-1187Seghetto pieghevole, 210 mm24,50Sì0,31 kg…/gt-1187.jpg
GT-2210Cesoie per siepi, lama ondulata39,00No1,10 kg…/gt-2210.jpg
GT-3305Trapiantatoio, acciaio inox9,80Sì0,18 kg…/gt-3305.jpg
GT-4120Tubo da giardino 25 m, 1/2"42,00Sì2,90 kg…/gt-4120.jpg

Il file dell'esempio contiene 1.236 prodotti da 52 pagine di elenco.

Una parte del codice

def product_links(list_url: str) -> Iterator[str]:
    """Link alle pagine prodotto da ogni pagina dell'elenco, seguendo 'Avanti'."""
    url: str | None = list_url
    while url:
        page = fetch(url)
        for card in page.select("div.product-card a.title"):
            yield urljoin(url, card["href"])
        next_link = page.select_one("a.pagination-next")
        url = urljoin(url, next_link["href"]) if next_link else None


def fetch(url: str) -> BeautifulSoup:
    """Una pagina pubblica, a un ritmo discreto: una pausa tra le richieste e qualche tentativo in caso di errore."""
    for attempt in range(3):
        time.sleep(settings.delay_seconds)
        response = session.get(url, timeout=30)
        if response.status_code == 200:
            return BeautifulSoup(response.text, "html.parser")
        log.warning("%s ha risposto %s, tentativo %d di 3", url, response.status_code, attempt + 1)
    raise ScraperError(f"{url} non si è aperta dopo 3 tentativi")

File: un archivio ZIP con scraper.py, settings.ini (la pagina iniziale, la pausa tra le richieste, il nome del file), requirements.txt e un README su come installarlo ed eseguirlo. Legge solo pagine pubbliche, una ogni 2 secondi, e controlla prima il file robots.txt del sito. Il cliente lo esegue sul proprio computer.

Cliente: un negozio online di giardinaggio che rivende gli attrezzi di un fornitore; il fornitore ha un catalogo pubblico sul suo sito ma nessun file di listino. Compito: scorrere le pagine di elenco del catalogo, aprire ogni pagina prodotto e salvare in Excel codice articolo, nome, prezzo, disponibilità, peso e link alla foto principale, per confrontare i prezzi una volta alla settimana.

Il cliente e tutti i dati sono inventati.

Informazioni sul servizio

Un parser raccoglie i dati che si vedono sulle pagine web pubbliche e li salva come tabella: prezzi e disponibilità dei prodotti, il catalogo di un fornitore per il suo negozio, annunci, offerte di lavoro, eventi o articoli. Ci indichi il sito e le pagine, elenchi i campi che le servono (nome, prezzo, link, immagine e così via) e ci invii una o due di quelle pagine salvate dal browser (File > Salva pagina con nome) o loro screenshot. Scriviamo il parser in Python sulla struttura reale di quelle pagine, e salva i risultati in CSV, Excel o JSON. Riceve un archivio con il codice, un file di impostazioni con gli indirizzi e la pausa tra le pagine, e un README che spiega come installare Python ed eseguirlo. Il parser lo esegue lei sul suo computer, così i dati arrivano direttamente a lei; non li raccogliamo per lei né li conserviamo. Legge solo pagine pubbliche, a un ritmo discreto, e non accede mai con login, non aggira captcha o altre protezioni né raccoglie dati personali come nomi, email o numeri di telefono delle persone. Quando un sito cambia struttura, il parser può richiedere un aggiornamento. Se può raccogliere e usare i dati di un sito secondo le sue condizioni è sua responsabilità.

Cosa è incluso

  • Cosa riceveUn archivio ZIP con il codice Python, un file di impostazioni e un README con le istruzioni passo passo; il codice è visibile anche nella pagina dell'ordine.
  • I suoi campi, la sua tabellaColonne nell'ordine che le serve
  • Costruito sulle pagine realiScritto sulla struttura delle pagine che invia
  • Ritmo discretoUna pausa tra le pagine, regolata nelle impostazioni
  • Gira sul suo computerWindows, macOS o Linux, con Python
  • Una guida sempliceCosa installare e come avviarlo, passo passo

Come funziona

  1. 1
    PagineLei indica il sito, i campi e una o due pagine salvate
  2. 2
    ParserScriviamo il codice e la guida per eseguirlo
  3. 3
    AvvioLo esegue e controlla le prime righe della tabella
  4. 4
    ModificheChiede modifiche nei limiti del pacchetto e invia eventuali messaggi di errore

Cosa ci serve da lei

Il sito e le pagine esatte: un link a un elenco e a una pagina di dettaglio, e circa quante pagine ci sono. I campi che le servono, nell'ordine della sua tabella, con un esempio per ciascuno. Una o due di quelle pagine salvate dal browser in HTML (File > Salva pagina con nome) o screenshot, così il parser segue la loro struttura reale. Il file dei risultati che le serve (CSV, Excel o JSON) e dove lo eseguirà.

Le chiederemo:

  • Quale sito e quali pagine?
  • I campi che le servono
  • Circa quante pagine?
  • Il file dei risultati
  • Altro che deve fare

Confronto dei pacchetti

PacchettiBaseParser per un tipo di pagina23 €StandardPagine di elenco e di dettaglio44 €PremiumPiù siti o tipi di pagina79 €
Tempi di consegna1 giorno2 giorni3 giorni
Revisioni123
Siti11fino a 3
Tipi di pagina12 (elenco e dettaglio)fino a 3
Campifino a 10fino a 25fino a 25 su ciascuno
Scorre le pagine di un elencoNoSìSì
File dei risultatiCSVExcel o CSVExcel, CSV o JSON
Duplicati rimossi, riprende da dove si è fermatoNoNoSì
Ordina BaseOrdina StandardOrdina Premium

Pagamento protetto

Paga al momento dell'ordine, ma il denaro viene sbloccato solo per un lavoro accettato.

  • Prezzo fissoIl prezzo del pacchetto non cambia dopo il pagamento.
  • Il denaro viene riservatoAl pagamento, l'importo viene solo riservato. Passa a Dleex quando accetta il lavoro.
  • Verificato prima della consegnaOgni risultato passa un controllo di qualità prima di arrivare a lei, e lo vede nella pagina dell'ordine prima di accettarlo.
  • Revisioni gratuiteRichieda revisioni nell'ambito del suo brief tante volte quante ne prevede il pacchetto.
  • Accettazione dopo 3 giorniSe entro 3 giorni dalla consegna non accetta il lavoro né richiede una revisione, il lavoro viene accettato automaticamente. Se scrive nella chat dell'ordine dopo la consegna, l'ordine resta in attesa; dopo la nostra risposta potremmo far ripartire i 3 giorni e glielo indicheremo nella chat.
  • Rifacimento o rimborso totaleSe il risultato non corrisponde al suo brief e le revisioni non hanno risolto il problema, oppure il lavoro richiede più del doppio dei tempi di consegna previsti, scriva nella chat dell'ordine: rifaremo il lavoro o le rimborseremo l'intero pagamento.
Come funziona →

Domande e risposte

È legale fare il parsing di un sito?

Raccogliere dati pubblici è consentito in molti casi, ma le condizioni d'uso dei siti e le leggi sui dati variano da paese a paese, quindi è lei a decidere se può raccogliere e usare i dati. Il parser non accede mai con login, non aggira protezioni e non raccoglie dati personali, il che lo mantiene sul sicuro.

Raccoglierete voi i dati per me?

No. Riceve il parser e lo esegue lei, così i risultati arrivano direttamente a lei e può rieseguirlo ogni volta che le servono dati aggiornati.

E se il sito cambia o blocca il parser?

Il parser funziona sulle pagine come sono ora. Se in seguito il sito cambia struttura, il parser richiede un aggiornamento, che è un nuovo ordine. Legge a un ritmo discreto, ma un sito può comunque limitare le visite; il parser non aggira questi limiti.

Può fare il parsing di Amazon, Google o dei social network?

No. Le loro condizioni vietano di raccogliere i loro dati in questo modo, molte loro pagine richiedono l'accesso e contengono dati personali delle persone. Per questi dati, usi l'API ufficiale o l'esportazione del servizio.

Devo saper programmare?

No. Il README spiega come installare Python una volta sola, installare ciò che serve al parser con un solo comando ed eseguirlo. Per le pagine che costruiscono i contenuti con JavaScript, il parser usa una libreria per browser (Playwright), e anche questo è spiegato nel README.

Non hai trovato la risposta?

Pacchetti