Cómo me hice "millonario" del plomo

Feb-05-20245 minutos de lectura

~ Un cuento de webscraping por Arya - Un usuario de ProxyScrape

Para que quede claro, debo aclarar que no soy un representante oficial de ProxyScrape. Sin embargo, soy un gran fan y cliente de sus servicios. Si aún no los utiliza, le recomiendo encarecidamente que lo haga. Las siguientes opiniones y pensamientos son enteramente míos.

"Oh $!*^, no hay manera"

Esa es exactamente la sensación que me encontré murmurando a las 3 de la madrugada, al darme cuenta de que una empresa que en su día estuvo tan de moda como los repartos de leche, algo que la mayoría de la gente relegaría a la época de la música disco y los trajes de neón, sigue dando vueltas como un mal corte de pelo de los 80. Y, por desgracia, está en todas partes.

Esta empresa era el verdadero negocio en su mejor momento. No podías escapar de ella durante su apogeo. Ahora, su nombre sólo se murmura con una pizca de nostalgia en las residencias de ancianos.

"Páginas Amarillas".

You might be wondering, “Why does this matter? Why should anyone give a damn? Why is this not a 30s TikTok with a dude playing GTA 5 on the other half of it?” Well, one of the hottest uses for web scraping is lead discovery and generation. In our capitalist wonderland where everyone’s peddling some crazy sh*t, it just makes sense to scour the internet for the suckers who’ll “HODL” and “FOMO” into your crypto timeshare that’s shaped like “half a rhombus”. And hey, just to be clear, “it’s NOT a pyramid scheme… it’s just shaped like those famous pointy things in Egypt.”

So, here’s the kicker. One of the absolute gems for B2B lead generation, in my humble opinion, is none other than YellowPages (or Yell for you “chewsday” people). Why? Well, let me break it down:

"muro de la vergüenza": Esas reliquias que no acaban de ponerse al día con la era de Internet siguen colgadas ahí. Es probable que el negocio de tu abuelo se esté enfriando allí, al igual que esa SMMA que empezaste por culpa de TikToks y abandonaste a los tres meses, y que ahora está inmortalizada en los directorios de empresas de Google.

"No soy como las demás": Mientras que los "scraperos" novatos creen que Google Maps es el santo grial de las pistas para pequeñas empresas, todo "scraper" avispado sabe que eso es una chorrada: está saturado, toda niña de 14 años inspirada por cierto calvo ha acosado a esas empresas.

"como quitarle un caramelo a un bebé": YellowPages' y sus sitios web derivados no tienen ni una pizca de protección. Podría raspar todos y cada uno de los negocios de su directorio en cuestión de segundos. Estamos hablando de decenas de millones de clientes potenciales.

Puede que no sea la palabra de moda en los círculos de marketing, pero ahí reside la oportunidad. Mientras otros persiguen las últimas tendencias, los menos avispados reconocen el potencial de los rincones olvidados de Internet. Puede que YellowPages sea una reliquia del pasado, pero en el mundo de la generación de contactos es una reliquia con un potencial sin explotar y una hoja de ruta hacia el éxito.

Ahora, te estarás preguntando: "¿Cómo podría aprovechar una oportunidad así?". - Vamos a recorrer juntos cada paso y, con un poco de suerte, incluso algunos de vosotros, neandertales, seréis capaces de rascar YellowPages al final de esto.

Vamos a enfocar esto como lo haríamos con cualquier otro sitio web. El primer paso es averiguar cómo coño funciona el sitio web. Esto normalmente requiere que tú, sí, tú, averigües cómo navegar hasta donde se encuentran esos jugosos datos. ¿Cómo esperas extraer los datos si no puedes encontrarlos?

Shown Above: YellowPages Canada’s landing page, the unfortunate victim of this post.

Como puedes ver en la página de inicio, hay dos entradas de texto: una para el término de búsqueda y otra para la ubicación. Rellenémoslos y hagamos una búsqueda; yo buscaré "Dentistas" en "Toronto, Ontario".

Shown Above: YellowPages Canada’s listing results page.

Una vez que averigüe su ABC y los rellene y consiga localizar el botón de búsqueda Y hacer clic en él (estoy impresionado), debería ser redirigido a una página como la de arriba que tiene una ruta como la siguiente:

/buscar/si/1/Dentistas/Toronto+ON

Podemos deducir la siguiente estructura de caminos (esto nos será útil más adelante):


/buscar/si/[Número de página]/[Término de búsqueda]/[Localidad]+[Código de región].

Otra cosa a tener en cuenta, ya hemos localizado los datos que queremos, los listados de negocios - vamos a averiguar donde estos listados de negocios se están cargando en, debe ser enviado dentro del documento O obtenido de un punto final de la API (o si eres torpe, y confía en mí lo he visto - websockets).

Se muestra arriba: Las peticiones fetch/XHR originadas en la página. (Spoiler: los datos no están en ninguna de ellas).

Arriba: Los listados de empresas dentro del documento. (OMGEEE Los datos estaban de hecho dentro del documento).

As we sifted through the API requests, looking for the data, it was proven futile. We then turned our attention to the HTML. Now, here’s a little nugget of insight for you – after “navigating the digital landscape for over a decade”, I knew instinctively that the data was within the document, thanks to the pages’ snappy responsiveness.

Pero seamos realistas. Dado que YellowPages es una empresa de guías telefónicas que busca desesperadamente relevancia y, lo que es más importante, ingresos, es improbable que hagan alarde de tecnología punta. Las posibilidades de que contraten a desarrolladores que presumen de franelas y tienen cincuenta aplicaciones de tareas pendientes basadas en React en su currículum son mínimas. Así que, ¿estamos realmente sorprendidos de que la página web sea estática?

Sin embargo, los listados de la página están contenidos en un div, extraíble mediante el selector "div.resultList". Cada listado individual, convenientemente anidado dentro del elemento mencionado, puede extraerse con el selector div[itemtype="http://schema.org/LocalBusiness] 

Te dejaré que descubras cómo extraer individualmente los datos más allá de este nivel de granularidad; de lo contrario, estaríamos aquí para siempre. Utiliza el atributo "itemprop" - debería facilitarte significativamente el proceso.

Now, to automate extraction: You should paginate through the results using the URL (recall the path structure we discussed earlier), extracting elements and data from each page until you hit an empty page. I personally opted to use Rust for this project as it’s fast and provides easy parallelization (which will be important in a second), leveraging the “reqwest” and “select” crates to handle the heavy lifting. And here’s a few pro tips: remember to rotate your user agent, set your referrer correctly, use a proxy, and PLEASE don’t DDOS them.

Arriba: Página de resultados vacía de YellowPages.

Your script should be good to go now. But how can we elevate this even further? Let’s put our singular combined brain cell to work and ponder… “Do we need to sequentially request each page?” Absolutely not. YellowPages makes it remarkably easy for us to parallelize this process by providing the number of pages available for the query – hint, hint, wink, wink.

Arriba: Recuento de páginas de YellowPages en la parte inferior de la página de resultados.

Sin embargo, esta estrategia de paralelización tiene un inconveniente: Aunque YellowPages puede sugerir que existen más de 60 páginas de resultados, intentar acceder a cualquier página más allá de 60 en los resultados no se renderizará. Por lo tanto, establezca un límite máximo para su paralelización en 60. Suponiendo que el ancho de banda y la potencia de cálculo sean adecuados, cada página de resultados debería rasparse en el mismo tiempo que le llevaría raspar una página con el modelo secuencial.

Arriba: Ejemplo de datos de anuncios de YellowPages extraídos.

Ahora te preguntarás, ¿se trata de un "clickbait"? ¿Qué tiene que ver lo de "millonario" con todo esto? Bueno, si me has seguido y ahora posees un script funcional, puedo o no puedo ser capaz de atestiguar personalmente que nada te impide teóricamente iterar a través de cada ciudad en Canadá y sacar cada listado de negocios de una consulta dentro de dicha ciudad de YellowPages. Estos datos pueden, literalmente, tener un valor en dólares de millones si se aumentan adecuadamente, pero también son, literalmente, millones de empresas dentro de su directorio que ahora están a su alcance.

Puede que YellowPages evoque recuerdos de una época pasada, pero su potencial para la generación de contactos B2B sigue siendo un tesoro oculto en el panorama digital. Al navegar por las peculiaridades de su interfaz web estática, la extracción de datos de esta plataforma aparentemente obsoleta revela una amplia gama de oportunidades de negocio. La naturaleza olvidada e infrautilizada de YellowPages la convierte en una oportunidad única.

Mi único objetivo es que esta entrada del blog no les deje pensando "el verdadero tesoro fueron los amigos que hicimos por el camino". Espero que haya demostrado las oportunidades únicas que existen, especialmente con el conjunto de habilidades que muchos de nosotros damos por sentado, y también espero que haya servido como una lectura interesante para aquellos de ustedes que tienen experiencia en este campo, y haya dado una idea a aquellos de ustedes que no la tienen.

Como siempre, manténgase a salvo, use protección y, por el amor de Dios... no haga algo donde el FBI estará sobre su trasero - bueno.. en este caso sería la RCMP.

Arriba: El equivalente canadiense del FBI: la RCMP.