Abbiamo effettuato un benchmark delle principali API di web scraping con 12.500 richieste a piattaforme di e-commerce e motori di ricerca. Successivamente, abbiamo testato l'affidabilità dei servizi sottostanti (ovvero proxy residenziali ) con 5.000 e 100.000 richieste parallele.
Sulla base di queste esperienze, illustriamo come estrarre grandi quantità di dati in modo efficiente ed etico . Scopri i principali fornitori, le sfide dell'estrazione di grandi quantità di dati e le migliori pratiche per superare questi ostacoli.
benchmark di affidabilità dell'infrastruttura dati web
Abbiamo misurato il tasso di successo e i tempi di risposta dei proxy residenziali per comprendere il comportamento di questi sistemi in presenza di carichi diversi. Poiché i proxy residenziali sono alla base di tutti i servizi avanzati (ad esempio, sbloccatori , API per lo scraping web ), la capacità del proxy residenziale rappresenta in genere il fattore limitante.
Tutti i servizi dei provider di riferimento si sono dimostrati affidabili con 5.000 richieste parallele. Con 100.000 richieste parallele, tutti i servizi hanno subito un certo degrado, ma Bright Data, Oxylabs e Decodo hanno mostrato una maggiore affidabilità, evidenziando variazioni limitate nel tasso di successo o nei tempi di risposta. Ad esempio, aumentando le richieste parallele da 5.000 a 100.000:
- Il tasso di successo dei proxy residenziali Bright Data è diminuito dal 96,5% al 93,4% e il tempo di risposta è aumentato da 1 secondo a 3,6 secondi.
- Oxylabs ' il tasso di successo è sceso dal 97,2% al 93,8% e il tempo di risposta è aumentato da 1,3 a 6,4 secondi.
A livello aziendale, una maggiore affidabilità riduce la frequenza dei tentativi, minimizza i costi di progettazione e diminuisce i costi complessivi. La scala di potenza è stata utilizzata sull'asse verticale per rendere più facile visualizzare la differenza tra i prodotti:
Limitazione : questa osservazione rappresenta un'istantanea. Sebbene l'osservazione abbia coinvolto 5 milioni di richieste inviate a ciascun fornitore, è possibile che le prestazioni dei fornitori cambino nel tempo.
Costo totale delle infrastrutture per la rimozione di materiali tramite raschiatura su larga scala
- Bright Data offre agli utenti di grandi dimensioni un'infrastruttura robusta e una copertura globale a un costo inferiore. Per le aziende che cercano il miglior rapporto qualità-prezzo, sia Bright Data che Oxylabs offrono un buon equilibrio tra prezzo e prestazioni.
- NetNut e Decodo sono le opzioni più economiche per le esigenze aziendali, con costi totali a partire da circa 10.750-11.000 dollari.
- Apify è il fornitore più costoso in questo confronto, con un prezzo di $17.749. Si tratta di circa il 65% in più rispetto al prezzo base di NetNut.
Considerata la vasta gamma di prodotti offerti da ciascun fornitore, è difficile confrontarli esclusivamente in base al prezzo. Tuttavia, un indice di prezzo generale fornisce un'indicazione sull'accessibilità economica dei servizi offerti da quel fornitore. Per ulteriori informazioni, consultare la nostra metodologia di benchmarking per la determinazione dei prezzi .
Come estrarre dati da siti web su larga scala
L'estrazione di dati da siti web su larga scala richiede efficacemente la combinazione di una strategia ben pianificata e di strumenti automatizzati per affrontare le sfide che si presentano. Esistono in genere due diversi tipi di obiettivi per l'estrazione di dati su larga scala:
1) Estrazione di migliaia/milioni di pagine da alcuni grandi siti web
I siti web di grandi dimensioni presentano in genere sistemi di paginazione complessi e integrano tecniche anti-scraping. Per estrarre dati da siti web di grandi dimensioni, è possibile utilizzare le API di web scraping, laddove disponibili. Queste sono convenienti in termini di costi perché riducono al minimo lo sforzo tecnico lato client, fornendo dati strutturati.
Tuttavia, le API di web scraping non sono disponibili per tutti i siti web. Per un approccio ottimale, puoi seguire questi passaggi:
Approccio consigliato
- Crea un elenco dei tipi di pagine da raccogliere. Ad esempio, una pagina di ricerca su Amazon è un tipo di pagina diverso da una pagina prodotto.
- Confronta questo elenco con le API fornite da ciascun provider per identificare quale provider consente di recuperare il maggior numero di pagine tramite API. Ogni tipo di pagina aggiuntivo fornito tramite API permette alle aziende di risparmiare ai team tecnici la gestione dei proxy e l'analisi delle pagine HTML. Puoi visualizzare tutte le API di web scraping insieme ai benchmark che mostrano i campi dati forniti dai diversi servizi.
- Utilizza le API quando sono disponibili.
- Quando le API di scraping non sono disponibili, è possibile utilizzareservizi di sblocco o proxy residenziali per aggirare le rigide misure anti-bot.
Esempio tratto dalla vita reale
Le aziende di e-commerce e i rivenditori che effettuano lo scraping dei siti web dei concorrenti (ad esempio Amazon) per ottenere prezzi dinamici si trovano ad affrontare questa sfida. Si tratta di un caso d'uso comune e, di conseguenza, le API di scraping per l'e-commerce sono le API di scraping più diffuse.
Se intendi estrarre dati da milioni di pagine al giorno, devi utilizzare un servizio in grado di gestire grandi volumi.
2) Estrazione di dati da migliaia di piccoli siti web
Questo tipo di web scraping su larga scala è impegnativo poiché i fornitori di infrastrutture dati web in genere non forniscono API per il web scraping e la maggior parte dei piccoli siti web ha strutture web eterogenee.
Tuttavia, i siti web più piccoli in genere integrano livelli inferiori di tecnologia anti-scrape. Pertanto, in tali operazioni di scraping vengono solitamente utilizzati dei proxy.
Nuovi sviluppi: LLM e scraper basati sull'IA
L'analisi sintattica delle pagine web era un tempo un lavoro manuale e dispendioso in termini di tempo, che richiedeva l'intervento di ingegneri che utilizzavano tecniche di riconoscimento di pattern per convertire l'HTML in dati strutturati.
Con l'intelligenza artificiale generativa, è possibile utilizzare modelli linguistici di grandi dimensioni per l'analisi sintattica. Tuttavia, i modelli linguistici di grandi dimensioni sono soggetti ad allucinazioni e si raccomanda alle aziende di testare i dati analizzati automaticamente per assicurarsi che siano stati analizzati correttamente.
I fornitori di infrastrutture dati web stanno integrando i LLM (Laboratory Learning Machines) nella loro offerta; scopri di più su questa nuova categoria: Web scraping basato sull'intelligenza artificiale .
Quali sono le sfide del web scraping su larga scala?
L'estrazione di dati dal web su larga scala presenta numerose sfide a causa della complessità della gestione di ingenti volumi di dati e delle componenti tecniche coinvolte. Ecco alcune delle sfide più comuni dell'estrazione di dati su larga scala:
Siti web dinamici:
I siti web dinamici, a differenza di quelli statici, utilizzano JavaScript per caricare o visualizzare i contenuti, rendendo difficile la raccolta di dati tramite i metodi tradizionali di web scraping. La maggior parte dei siti web dinamici richiede l'interazione dell'utente, ad esempio cliccando sui pulsanti o compilando moduli. Il tuo scraper deve essere in grado di simulare queste interazioni per accedere ai dati.
Limitazione della velocità:
I siti web utilizzano la limitazione della frequenza delle richieste (rate limiting) per controllare il numero di richieste che un client può effettuare in un determinato periodo. Questo protegge i siti web dai bot dannosi e impedisce che i loro dati vengano abusati o utilizzati in modo improprio.
Misure anti-raschiamento:
Molti siti web utilizzano meccanismi anti-scraping , come CAPTCHA, verifiche JavaScript e blocchi IP, per prevenire o limitare le attività di web scraping.
Rischio legale:
Le attività di scraping su larga scala attirano l'attenzione dei team di sicurezza e, anche se solo una piccola parte di queste attività include operazioni potenzialmente illegali o non etiche (ad esempio, la raccolta di dati di accesso o di informazioni personali identificabili), ne consegue rapidamente un contenzioso. Un esempio recente è la causa intentata da Google contro SerpApi per aver effettuato lo scraping di contenuti protetti da copyright presenti nei risultati di ricerca pubblici. 1
Accuratezza dei dati:
Garantire l'accuratezza dei dati può essere difficile, soprattutto quando si lavora con grandi insiemi di dati. Ad esempio, grandi insiemi di dati raccolti da più fonti possono presentare incongruenze. Ispezionare manualmente i nuovi dati, in particolare in insiemi di grandi dimensioni, può risultare impraticabile e noioso. È possibile utilizzare metriche automatizzate per convalidare e ispezionare i dati, ad esempio sfruttando algoritmi di machine learning o sviluppando script.
Come eseguire efficacemente lo scraping web su larga scala
Abbiamo stilato le seguenti linee guida fondamentali per aiutarvi a superare le sfide del web scraping su larga scala, garantendo un'estrazione dei dati efficiente e conforme alla legge. È importante utilizzare queste best practice in modo responsabile e in conformità con i termini di servizio del sito web.
- Lo scraping dei browser introduce funzionalità di sblocco che possono essere controllate a livello programmatico, facilitando così la raccolta dei dati.
- I browser headless consentono agli utenti di estrarre i dati necessari dai siti web dinamici. Quando si effettua lo scraping di siti dinamici, è possibile utilizzare i browser headless per simulare le interazioni dell'utente, come i movimenti del mouse e i clic. Tuttavia, potrebbero non essere in grado di visualizzare correttamente le pagine che si basano in larga misura su Javascript.
- Proxy e rotazione IP: la maggior parte delle librerie e degli strumenti di web scraping offre opzioni per l'utilizzo di server proxy. I web scraper preconfigurati spesso includono l'integrazione nativa con i servizi proxy per aiutare gli utenti a evitare di essere bloccati dai siti web di destinazione.
- Ad esempio,i proxy rotanti consentono ai web scraper di aggirare la limitazione della frequenza delle richieste ed effettuare un numero maggiore di richieste senza essere segnalati come sospetti. Consigliamo di utilizzare indirizzi IP residenziali noti per la loro affidabilità e velocità.
- Automazione del browser web: strumenti di automazione web come Selenium e Puppeteer consentono di simulare le attività umane e interagire con i siti web nello stesso modo in cui lo farebbero gli esseri umani. Questo può essere utile per estrarre grandi quantità di dati da siti web dinamici senza doverli navigare manualmente.
- Tecniche di calcolo distribuito: un'architettura di web scraping distribuito consente un'estrazione di dati su larga scala più efficiente, suddividendo e distribuendo le attività di web scraping su più macchine. È possibile creare il proprio scraper distribuito in qualsiasi linguaggio di programmazione, in base alla propria familiarità, per superare sfide come la limitazione della frequenza delle richieste e la gestione di contenuti dinamici.
Che cos'è il web scraping su larga scala?
Il web scraping su larga scala è il processo di estrazione di dati da siti web, con almeno centinaia di migliaia di richieste al mese. Sebbene sia possibile eseguirlo manualmente , il termine si riferisce in genere a un processo automatizzato implementato da web crawler o scraper .
Il volume e la complessità dei dati coinvolti nel web scraping su larga scala pongono questioni etiche e legali , rendendo necessaria una comprensione approfondita degli strumenti , delle tecniche e delle migliori pratiche di web scraping per raggiungere il successo.
Metodologia
Abbiamo utilizzato ciascun servizio proxy residenziale di riferimento per inviare richieste parallele a 50 URL diversi ospitati da aimultiple.com. Questi URL non utilizzavano alcun servizio anti-scraping poiché durante questo test abbiamo disattivato tutti i servizi di sicurezza del nostro sito web, come WAF e protezione DDoS a livello di rete.
Abbiamo eseguito questi test da oltre 100 server, ciascuno con una connessione uplink da 10 GB, ospitati in diverse regioni. Durante le misurazioni, ci siamo assicurati che tutti i thread paralleli fossero attivi simultaneamente. In una misurazione, abbiamo avuto 5.000 richieste parallele e in un'altra 100.000.
Una richiesta veniva considerata andata a buon fine se restituiva un codice di risposta 200 e un identificatore corretto. Per garantire che i risultati non venissero memorizzati nella cache, abbiamo aggiunto un identificatore univoco all'intestazione della richiesta. Successivamente, tramite uno script, l'URL stampava questo identificatore nel corpo della risposta. Infine, confrontavamo i due identificatori (uno nel corpo della risposta e l'altro nell'intestazione della richiesta). Con questo approccio, siamo stati in grado di garantire che le richieste visitassero gli URL di destinazione e che i risultati non venissero memorizzati nella cache (ovvero che fossero aggiornati).
Sii il primo a commentare
Il tuo indirizzo email non verrà pubblicato. Tutti i campi sono obbligatori.