Le migliori API di scraping di Zillow a confronto: analisi delle prestazioni
Abbiamo confrontato le prestazioni dei cinque migliori fornitori di web scraping su Zillow, uno dei principali domini immobiliari , eseguendo oltre 1.250 richieste di scraping per ciascun fornitore. Ogni fornitore ha ricevuto un set identico di URL di annunci immobiliari ed è stato valutato in base al tempo di completamento, al tasso di successo e al numero di campi di dati strutturati restituiti per annuncio.
benchmark di scraping di Zillow
Abbiamo inoltre analizzato i tempi di completamento specifici per le attività in cui tutti i fornitori sono riusciti a portarle a termine. I risultati sono stati pressoché identici ai tempi di completamento complessivi, indicando che le richieste non andate a buon fine non hanno inciso in modo significativo sul tempo medio di completamento per nessun fornitore.
Per maggiori dettagli sul processo di test, potete consultare la sezione relativa alla metodologia di benchmarking .
Quali dati si possono estrarre da Zillow?
Poiché Apify era l'unico provider a restituire un output JSON strutturato, era anche l'unico con campi di metadati misurabili. Apify ha restituito 185 campi di metadati per Zillow. I restanti provider hanno restituito HTML renderizzato, che è stato analizzato localmente utilizzando selettori CSS e pertanto non ha prodotto conteggi di metadati comparabili.
Apify campi metadati disponibili per Zillow
Risultati del benchmark di scraping di Zillow
Oxylabs ha registrato il tasso di successo più basso in questo confronto, pari all'89%, e anche il tempo medio di completamento più elevato, di circa 59 secondi. Ha utilizzato una fonte di scraping dedicata da Zillow, ma ciò non si è tradotto in un vantaggio in termini di velocità o affidabilità su questo particolare set di dati.
Decodo ha registrato un tasso di successo del 97%, il secondo più alto dopo Apify. Tuttavia, il suo tempo di completamento è stato notevolmente più elevato, circa 51 secondi, collocandolo tra i provider più lenti. Ha ottenuto questo risultato utilizzando una configurazione di scraping generica, senza alcuna configurazione specifica per Zillow.
Apify ha raggiunto un tasso di successo del 100% su Zillow con un tempo di completamento di circa 17 secondi. È stato l'unico provider a restituire un output JSON strutturato, il che lo ha reso anche l'unico con campi di metadati misurabili, con una media di 185 punti dati per annuncio.
Nimble è risultato il provider più veloce nel benchmark, completando le richieste in circa 12 secondi in media. Il suo tasso di successo si è attestato al 92%, posizionandolo nella metà superiore della classifica. La combinazione di velocità e affidabilità ha reso questo provider uno dei più equilibrati in questo ambito.
Zyte ha raggiunto un tasso di successo del 92% con un tempo di completamento di circa 46 secondi. Si è collocato in un intervallo simile a Nimble in termini di successo, ma è stato considerevolmente più lento. Il risultato è stato stabile ma non si è distinto in nessuna direzione.
Metodologia di benchmarking
Abbiamo testato cinque fornitori di web scraping (Apify, Decodo, Oxylabs, Nimble, Zyte) su zillow.com.
Set di dati
Abbiamo preparato 250 URL di pagine prodotto da Zillow. Le pagine prodotto sono schede individuali di immobili con dettagli quali indirizzo, prezzo, numero di camere da letto, bagni, metratura e storia dell'immobile.
Tutti gli URL sono stati verificati come accessibili prima del benchmark. Gli URL seguivano il formato standard della pagina di dettaglio di Zillow (/homedetails/…/zpid/).
Configurazione condivisa
Tutti i fornitori hanno ricevuto URL identici dallo stesso set di dati e sono stati testati nelle stesse condizioni:
- Esecuzione sequenziale: una richiesta alla volta, nessuna richiesta parallela
- Intervallo tra le richieste: 2 secondi
- Gestione del limite di richieste: attesa di 30 secondi con fino a 3 tentativi sulla porta HTTP 429
- Tempo limite per l'invio: 300 secondi
- Tempo di timeout per l'esecuzione: 600 secondi
- Ogni URL è stato testato una volta per ciascun fornitore.
Configurazioni del provider
Apify
Apify ha utilizzato l'attore maxcopell/zillow-detail-scraper, che restituisce JSON strutturato con campi analizzati. Non è stato necessario alcun parsing del selettore CSS. Le esecuzioni dell'attore sono state interrogate a intervalli di 1 secondo fino al raggiungimento dello stato SUCCEEDED.
Decodo
Decodo ha utilizzato l'API Universal Scraper (target: universal, headless: html), che restituisce HTML renderizzato tramite JavaScript. La risposta è stata analizzata localmente con selettori CSS. Tutte le richieste includevano un'intestazione User-Agent per desktop.
Oxylabs
Oxylabs ha utilizzato l'API in tempo reale con sorgente: zillow e rendering: html, che restituisce HTML renderizzato tramite JavaScript. La risposta è stata analizzata localmente con selettori CSS.
Nimbleway
Nimble ha utilizzato l'API Extract con render: true e driver: vx10 (browser headless stealth). La risposta è stata analizzata localmente con selettori CSS. Non è stata applicata alcuna configurazione specifica del dominio.
Zyte
Zyte ha utilizzato l'API Extract con browserHtml: true, che restituisce HTML renderizzato in JavaScript tramite un browser Chromium headless. La risposta è stata analizzata localmente con selettori CSS. Non è stata applicata alcuna configurazione specifica del dominio.
Validazione
Verifica dello stato HTTP
Prima della convalida, viene innanzitutto verificato il codice di risposta HTTP del provider. Le risposte con codici di stato compresi tra 200 e 399 e 404 sono considerate invii riusciti e passano alla fase di convalida. Qualsiasi altro codice di stato (400, 403, 500, 550, ecc.) viene trattato come un invio non riuscito e il test viene immediatamente contrassegnato come fallito senza passare alla fase di convalida.
Regole di convalida
I test che superano il controllo dello stato HTTP vengono convalidati nel seguente ordine:
- Rilevamento 404 : Se il contenuto della pagina o un errore dell'API indica che la pagina non esiste più ("pagina non trovata", "non esiste", "pagina morta"), il test viene contrassegnato come valido. Il provider ha identificato correttamente una pagina non disponibile.
- Estrazione dati (API JSON) : per i fornitori che restituiscono JSON strutturato, deve essere presente almeno un campo dati non vuoto, con un tipo valido a seconda del campo (stringa o intero). I campi controllati includono indirizzo, prezzo, numero di camere da letto, numero di bagni e metratura.
- Estrazione dati (HTML) : per i provider che restituiscono HTML, la risposta viene analizzata con selettori CSS specifici di Zillow. Se almeno un selettore corrisponde e restituisce un valore non vuoto, il test ha esito positivo.
- Indicatore di pagina (solo HTML): se non sono stati estratti elementi di dati ma almeno uno dei selettori CSS predefiniti per Zillow corrisponde a un elemento della pagina, il test viene contrassegnato come valido. Ciò conferma che la pagina è stata renderizzata e caricata, anche se non sono stati trovati elementi di dati strutturati nei contenitori previsti.
- Se nessuna delle condizioni sopra indicate viene soddisfatta, il test fallisce. Le cause più comuni di fallimento includono pagine di verifica captcha/bot, rendering JavaScript insufficiente, errori di connessione proxy ed errori del crawler.
Metrica
Tasso di successo della validazione : la percentuale di URL testati in cui il fornitore ha restituito dati utilizzabili, calcolata come numero di test riusciti diviso per il numero totale di test.
Tempo di completamento : il tempo totale intercorso tra l'invio della richiesta di scraping e la ricezione dei risultati validati, misurato in secondi. Per i provider asincroni, lo stato di completamento del job è stato rilevato a intervalli di 1 secondo. Il valore viene riportato come media aritmetica di tutte le esecuzioni di un gruppo.
Metadati disponibili : il numero di nomi di campo univoci restituiti dal provider per tutti gli elementi in una risposta. Applicabile solo alle risposte API JSON.
FAQ
Le API strutturate restituiscono dati validati come prezzo, indirizzo, numero di camere da letto e metratura in formati coerenti. Quando si utilizzano provider basati su HTML, è necessario verificare i dati estratti confrontandoli con annunci noti e controllare la presenza di campi mancanti a causa del rendering dinamico delle pagine o dei reindirizzamenti anti-bot.
Sì, la maggior parte dei fornitori di scraping supporta sia gli annunci di affitto che quelli di vendita su Zillow. La struttura dell'URL è diversa tra i due, quindi il tuo dataset deve includere il tipo di annuncio corretto. Alcuni fornitori utilizzano configurazioni o ID di dataset separati per gli affitti e per le vendite.
Per gli URL dei prodotti (singoli elenchi), la paginazione non è necessaria poiché ogni URL restituisce una singola proprietà. Per gli URL di ricerca che restituiscono più risultati, i provider gestiscono la paginazione in modo diverso. Alcune API strutturate accettano un parametro di limite per controllare il numero di risultati per richiesta, mentre i provider basati su HTML restituiscono solo gli elenchi visualizzati nella prima pagina.
Zillow utilizza CAPTCHA, blocco IP e rendering JavaScript dinamico per impedire l'accesso automatizzato. I problemi più comuni includono risposte vuote da richieste bloccate, dati incompleti da pagine non completamente renderizzate e annunci obsoleti che restituiscono un errore 404. L'utilizzo di provider con API Zillow dedicate o il rendering headless del browser riduce questi problemi.
I dati estratti da Zillow possono essere utilizzati per monitorare l'andamento dei prezzi per quartiere, confrontare i prezzi di listino con le stime di Zillow, tenere traccia dei giorni di permanenza sul mercato, analizzare il prezzo al metro quadro nei diversi codici postali e identificare le proprietà sottovalutate. Le API strutturate che restituiscono campi come la cronologia dei prezzi e le valutazioni fiscali forniscono dati più approfonditi per l'analisi degli investimenti.
Sii il primo a commentare
Il tuo indirizzo email non verrà pubblicato. Tutti i campi sono obbligatori.