Cómo me hice "millonario" del plomo

Mar-06-20245 minutos de lectura

~ Un cuento de webscraping por Arya - Una usuaria de ProxyScrape Para que quede claro, debo aclarar que no soy representante oficial de ProxyScrape. Sin embargo, soy una gran fan y cliente de sus servicios. Si aún no los utilizas, ¡te recomiendo encarecidamente que lo hagas! El

~ 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".

Quizá se pregunte: "¿Por qué importa esto? ¿Por qué debería importarle a alguien? ¿Por qué no es un TikTok de los años 30 con un tío jugando a GTA 5 en la otra mitad?" Pues bien, uno de los usos más populares del web scraping es el descubrimiento y la generación de oportunidades. En nuestro país de las maravillas capitalista, donde todo el mundo vende una mierda loca, tiene sentido buscar en Internet a los imbéciles que se "HODL" y "FOMO" en su tiempo compartido cripto que tiene forma de "medio rombo". Y oye, para que quede claro, "NO es un esquema piramidal... sólo tiene la forma de esas famosas cosas puntiagudas de Egipto".

Así que, aquí está el truco. Una de las joyas absolutas para la generación de leads B2B, en mi humilde opinión, no es otra que YellowPages (o Yell para vosotros los "masticadores"). ¿Por qué? Bueno, déjame que te lo explique:

  1. "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.

  1. "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.

  1. "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?

Arriba: Página de aterrizaje de YellowPages Canadala desafortunada víctima de este 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".

Arriba: Página de resultados de YellowPages Canada.

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).

Al escudriñar las solicitudes de la API en busca de los datos, resultó inútil. Entonces nos centramos en el HTML. Después de "navegar por el panorama digital durante más de una década", supe instintivamente que los datos estaban en el documento, gracias a la ágil capacidad de respuesta de las páginas.

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.

Ahora, a automatizar la extracción: Deberías paginar a través de los resultados usando la URL (recuerda la estructura de rutas que discutimos antes), extrayendo elementos y datos de cada página hasta que llegues a una página vacía. Personalmente, he optado por utilizar Rust para este proyecto, ya que es rápido y proporciona una fácil paralelización (que será importante en un segundo), aprovechando las cajas "reqwest" y "select" para manejar el trabajo pesado. Y aquí van unos cuantos consejos profesionales: recuerda rotar tu agente de usuario, configurar tu referrer correctamente, usar un proxy, y POR FAVOR, no hagas DDOS.

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

Tu guión ya debería estar listo. Pero, ¿cómo podemos elevar esto aún más? Pongamos a trabajar nuestra singular neurona combinada y reflexionemos... "¿Necesitamos solicitar secuencialmente cada página?". En absoluto. YellowPages hace que sea muy fácil para nosotros para paralelizar este proceso, proporcionando el número de páginas disponibles para la consulta - pista, pista, guiño, guiño.

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.