Come sono diventato un "milionario" del piombo

Mar-06-20245 minuti di lettura

~ Un racconto di webscraping di Arya - Un utente di ProxyScrape Per essere chiari, devo dichiarare che non sono un rappresentante ufficiale di ProxyScrape. Tuttavia, sono un grande fan e cliente dei loro servizi. Se non utilizzate già i loro servizi, vi consiglio vivamente di farlo! Il

~ Un racconto di webscraping di Arya - Un utente di ProxyScrape

Per essere chiari, devo dichiarare che non sono un rappresentante ufficiale di ProxyScrape. Tuttavia, sono una grande fan e cliente dei loro servizi. Se non utilizzate già i loro servizi, vi consiglio vivamente di farlo! Le opinioni e i pensieri che seguono sono interamente miei.


"Oh $!*^, non c'è modo".

Questo è l'esatto sentimento che mi sono ritrovato a mormorare alle 3 del mattino, alle prese con la consapevolezza che un'azienda un tempo alla moda come le consegne di latte, qualcosa che la maggior parte delle persone avrebbe relegato all'epoca della disco music e di quei selvaggi abiti al neon, è ancora in giro come un brutto taglio di capelli degli anni '80 - e purtroppo è ovunque.

Questa azienda era un vero affare nel suo periodo di massimo splendore. Nel periodo di massimo splendore non si poteva sfuggire. Ora il suo nome viene mormorato con un pizzico di nostalgia solo nelle case di riposo.

"YellowPages".

Potreste chiedervi: "Che importanza ha? Perché dovrebbe fregare a qualcuno? Perché non si tratta di un TikTok anni '30 con un tizio che gioca a GTA 5 nell'altra metà del video?" Ebbene, uno degli utilizzi più caldi del web scraping è la scoperta e la generazione di lead. Nel nostro paese delle meraviglie capitalistico, in cui tutti vendono cose pazzesche, ha senso perlustrare Internet per trovare i fessi che "HODL" e "FOMO" si innamoreranno della vostra multiproprietà di criptovalute a forma di "mezzo rombo". E, per essere chiari, "non è uno schema piramidale... ha solo la forma di quelle famose cose appuntite in Egitto".

Quindi, ecco il bello. Una delle gemme assolute per la generazione di lead B2B, a mio modesto parere, non è altro che YellowPages (o Yell per voi "chewsday"). Perché? Beh, lasciatemi spiegare:

  1. Il "muro della vergogna": Quelle reliquie che non si sono ancora adeguate all'era di Internet sono ancora lì. L'attività di vostro nonno è probabilmente lì, proprio come quella SMMA che avete avviato a causa di TikToks e che avete abbandonato nel giro di tre mesi e che ora è immortalata negli elenchi aziendali di Google.

  1. "Non sono come le altre ragazze": Mentre gli scraper dal viso fresco credono che Google Maps sia il Santo Graal per i contatti delle piccole imprese, ogni scraper esperto sa che si tratta di un mucchio di stronzate: è saturo, ogni quattordicenne ispirato da un certo uomo calvo ha molestato quelle imprese.

  1. "come togliere le caramelle a un bambino": I siti web di YellowPages e dei suoi derivati non hanno uno straccio di protezione. Potrei recuperare ogni singola azienda presente nel loro elenco in pochi secondi. Stiamo parlando di decine di milioni di contatti.

Certo, potrebbe non essere la parola d'ordine nei circoli del marketing, ma è proprio qui che risiede l'opportunità. Mentre gli altri inseguono le ultime tendenze, i pochi esperti riconoscono il potenziale negli angoli dimenticati di Internet. Le Pagine Gialle possono essere una reliquia del passato, ma nel mondo della lead generation sono una reliquia con un potenziale non sfruttato e una tabella di marcia verso il successo.

Ora, vi starete chiedendo: "Come posso approfittare di una simile opportunità?". - Vediamo insieme tutti i passaggi e, se tutto va bene, alla fine anche alcuni di voi neandertaliani saranno in grado di raschiare YellowPages.

Affronteremo la questione come faremmo con qualsiasi altro sito web. Il primo passo è capire come diavolo funziona il sito. Questo di solito richiede che voi, sì, voi, capiate come navigare fino a dove si trovano i dati succosi. No $!*^... come pensate di estrarre i dati se non riuscite a trovarli?!?

In alto: La pagina di destinazione di YellowPages CanadaLa sfortunata vittima di questo post.

Come si può vedere nella pagina di destinazione, ci sono due input di testo: uno per il termine di ricerca e l'altro per la località. Compiliamoli ed effettuiamo una ricerca; cercherò "Dentisti" a "Toronto, Ontario".

In alto: La pagina dei risultati degli annunci di YellowPages Canada.

Una volta capito l'ABC e compilato il modulo, riuscendo a individuare il pulsante di ricerca e a cliccarlo (sono impressionato), dovreste essere reindirizzati a una pagina come quella qui sopra, con un percorso simile al seguente:

/ricerca/si/1/Dentisti/Toronto+ON

Possiamo dedurre la seguente struttura del percorso (che ci tornerà utile in seguito):


/ricerca/si/[Numero di pagina]/[Termine di ricerca]/[Località]+[Codice regione]

Un'altra cosa da notare: abbiamo già individuato i dati che ci interessano, gli elenchi delle aziende; cerchiamo di capire da dove vengono caricati gli elenchi delle aziende, che dovrebbero essere inviati all'interno del documento O recuperati da un endpoint API (o, se si è un po' imbranati, e credetemi, l'ho visto - websocket).

Mostrato sopra: Le richieste fetch/XHR provenienti dalla pagina. (Spoiler: i dati non sono in nessuna di esse).

In alto: Gli elenchi delle aziende all'interno del documento. (OMGEEE I dati erano effettivamente all'interno del documento).

Abbiamo passato al setaccio le richieste API alla ricerca dei dati, ma è stato inutile. Abbiamo quindi rivolto la nostra attenzione all'HTML. Dopo aver "navigato nel panorama digitale per oltre un decennio", sapevo istintivamente che i dati si trovavano all'interno del documento, grazie alla rapida reattività delle pagine.

Ma siamo realisti. Dato che YellowPages è un'azienda di elenchi telefonici alla disperata ricerca di rilevanza e, soprattutto, di entrate, è improbabile che ostenti stack tecnologici all'avanguardia. Le possibilità che assumano sviluppatori che sfoggiano flanelle e che hanno cinquanta applicazioni to-do basate su React nel loro curriculum sono scarse o nulle. Quindi, siamo davvero scioccati dal fatto che la pagina web sia statica?

Tuttavia, gli annunci all'interno della pagina sono contenuti in un div, estraibile con il selettore "div.resultList". Ogni singolo elenco, opportunamente annidato all'interno dell'elemento citato, può essere estratto con il selettore div[itemtype="http://schema.org/LocalBusiness] 

Vi lascio immaginare come estrarre individualmente i dati al di là di questo livello di granularità; altrimenti saremmo qui per sempre. Utilizzate l'attributo "itemprop", che dovrebbe facilitare notevolmente il processo.

Ora, per automatizzare l'estrazione: Dovreste sfogliare i risultati usando l'URL (ricordate la struttura del percorso di cui abbiamo parlato prima), estraendo elementi e dati da ogni pagina finché non raggiungete una pagina vuota. Personalmente ho scelto di utilizzare Rust per questo progetto, in quanto è veloce e fornisce una facile parallelizzazione (che sarà importante tra un secondo), sfruttando i crate "reqwest" e "select" per gestire il lavoro pesante. Ecco qualche consiglio: ricordatevi di ruotare il vostro user agent, di impostare correttamente il vostro referrer, di usare un proxy e, PER FAVORE, di non fare DDOS.

In alto: La pagina dei risultati vuota di YellowPages.

Il vostro script dovrebbe essere pronto per l'uso. Ma come possiamo migliorare ulteriormente questo aspetto? Mettiamo al lavoro le nostre singole cellule cerebrali e riflettiamo... "Dobbiamo richiedere in sequenza ogni pagina?". Assolutamente no. YellowPages ci permette di parallelizzare questo processo con estrema facilità, fornendo il numero di pagine disponibili per la query - suggerimento, suggerimento, occhiolino, occhiolino.

In alto: Il conteggio delle pagine di YellowPages in fondo alla pagina dei risultati.

Questa strategia di parallelizzazione presenta però un'avvertenza: Sebbene YellowPages possa suggerire l'esistenza di più di 60 pagine di risultati, il tentativo di accedere a qualsiasi pagina oltre le 60 dei risultati non verrà visualizzato. Pertanto, è bene fissare un limite massimo di 60 pagine per la parallelizzazione. Supponendo una larghezza di banda e una potenza di calcolo adeguate, ogni pagina di risultati dovrebbe essere raschiata nello stesso tempo che si impiegherebbe per raschiare una pagina con il modello sequenziale.

In alto: Esempio di estrazione dei dati degli annunci di YellowPages.

Ora, vi chiederete: si trattava di clickbait? Cosa c'entra il "milionario" con tutto questo? Beh, se avete seguito la vicenda e ora possedete uno script funzionante, posso o meno testimoniare personalmente che nulla vi impedisce di iterare teoricamente tutte le città del Canada e di estrarre da YellowPages tutti gli annunci commerciali di una query all'interno di tale città. Questi dati possono letteralmente avere un valore in dollari dell'ordine di milioni, se opportunamente incrementati, ma sono anche letteralmente milioni di aziende all'interno del loro elenco che ora sono alla vostra portata.

YellowPages può evocare ricordi di un'epoca passata, ma il suo potenziale per la generazione di lead B2B rimane un tesoro nascosto nel panorama digitale. Navigando tra le stranezze della sua interfaccia web statica, lo scraping dei dati da questa piattaforma apparentemente obsoleta svela una vasta gamma di lead aziendali. La natura trascurata e sottoutilizzata di YellowPages ne fa un'opportunità unica.

Il mio unico obiettivo è che questo post non vi lasci pensare "il vero tesoro sono stati gli amici che ci siamo fatti lungo la strada": spero che questo post dimostri le opportunità uniche che esistono, soprattutto con le competenze che molti di noi danno per scontate, e che sia anche una lettura interessante per coloro che hanno esperienza in questo campo, e che dia un'idea a coloro che non ce l'hanno.

Come sempre, state tranquilli, usate le protezioni e per l'amor di Dio... non fate qualcosa per cui l'FBI vi stia addosso - beh... in questo caso sarebbe la RCMP.

Nella foto in alto: L'equivalente canadese dell'FBI: l'RCMP.