Inicio

Victor Vollbrecht

Emprendedor, inversor y curioso

Poner la fecha me incomoda

¿Qué es un web scraper?

Un web scraper (web data extractor, screen scraping, web harvesting) es un programa informático que tiene como finalidad recoger información de páginas web de una forma automática. Recientemente, Phil Town, creador de Rule #1 Investing, tuvo la idea de ofrecer a sus suscriptores un seguimiento de los inversores que él considera que toman buenas decisiones. Quería crear una sección en su página web donde los usuarios que pagan mensualmente pudieran observar los movimientos de compra y venta de personas seleccionadas por él mismo. Cuando preguntó cómo podía hacer esto, le respondieron que necesitaba contratar a programadores para crear un web scraper. ¿Y por qué un web scraper?.

Lo que pretendía hacer Phil era trasladar los datos de otra página web hacia la suya. Si tuvo que elegir la opción de contratar la creación de un web scraper fue porque el sitio de donde necesitaba coger la información (nombre del inversor, capital de cada uno, movimientos realizados…) no disponía de un mayordomo virtual denominado API, (Application Programming Interface). Una API es, en conceptos simples, un canal por el que comunicarse con otro programa informático, ya sea propio o de otras personas. Lo he denominado mayordomo porque se asemeja bastante bien a su función. Cuando entra en una web de noticias o de informacion meteorológica y ve la temperatura de su ciudad, lo más probable es que ese mismo sitio no tenga ningún sensor propio en cada una de las ciudades del mundo para poder darle ese dato. Lo que hacen estos sitios web es preguntarle a una agencia meteorológica, ya sea privada o gubernamental, para inmediatamente proporcionársela a usted, ya sea con un texto o imagen, en la página web.

Explicación API

Tanto el formato de la pregunta que se le hace a un API como la respuesta son conocidas por ambas partes y de esta manera se consiguen aplicaciones complejas y muy útiles. Sin embargo, ¿y si no hay API?.

Cuando no existe una API suele haber un problema, o varios. Un sitio web puede contener una información crucial para nuestro proyecto de negocio o simplemente porque necesitamos extraer algo de cientos de links pero no se nos ocurre hacerlo uno a uno. Crear una API cuesta dinero y tiempo, además del mantenimiento y uso de recursos que conlleva. Como no siempre podemos disponer de una API, la otra solución para rascar datos es el webscraping. A partir de ahora utilizaré un ejemplo muy fácil de entender y además real: Alicraper, un web scraper para recoger el precio original, precio con descuento y número de existencias de un producto de AliExpress conociendo la ID (código único) o IDs de cada producto. Este web scraper lo he programado en dos días utilizando el framework Scrapy para Python en VS Code.

La situación es la siguiente: Tenemos una tienda online creada con WooCommerce que vende productos de AliExpress. Esta tienda NO está conectada a AliExpress. En la tienda los productos tienen un número de stock que NO está sincronizado con las existencias reales del proveedor en AliExpress. Puede darse el caso de que un cliente compre un producto en la tienda de WooCommerce, pero que ya esté agotado en AliExpress. Esta situación sería desagradable para el cliente pues habría que comentarle que, o recibe un reembolso, espera a que haya stock (que no se sabe cuándo) o se le manda otro producto similar. Para evitar la posibilidad de que esto pase, sería útil poder llevar un seguimiento del número de existencias reales (el que aparece en la página del producto de AliExpress) para anticiparse con tiempo a la posibilidad de que un artículo se agote y así desactivarlo en la tienda WooCommerce de forma preventiva. Espero que haya entendido correctamente la necesidad con esta explicación breve.

AliExpress dispone de una API dirigida a su sistema de afiliados, pero este mayordomo no responde a la pregunta de ¿cuántas unidades existen de este producto?. Por eso mismo se debe crear un web scraper, también llamados spiders, porque son arañas virtuales iguales que las que usa Google y otras plataformas para indexar las páginas y luego posicionarlas según el análisis que hagan. ¿Le suena el archivo robots.txt? Lo único que hace es dar instrucciones a esas arañas.

Cuando entra en la página de cualquier producto de AliExpress casi siempre puede ver los mismos elementos. Casi siempre porque puede ser que algunos no estén, si por ejemplo un producto no tiene descuento no aparecerá el precio con descuento.

Informacion a recoger de Aliexpress

Sin embargo lo que sí es siempre igual es la forma en la que la web “pone nombre” a cada uno de los elementos. Si tiene pensado crear un web scraper por su cuenta es esencial que conozca el lenguaje de etiquetas HTML. AliExpress marca cada pieza de información ya sea con una ID concreta id="nombre_id" o con una clase class="nombre_clase". Conociendo esto, lo único que queda es extraer la información que queramos con herramientas como XPATH.

Alicraper HTML Tag

Alicraper guarda toda la información recogida de cada link proporcionado en un archivo .csv muy útil para importar en excel y tener una tabla cómoda para consultar los datos recogidos.

Alicraper resultados Excel

En resumen, quédese con que un web scraper sirve para recoger información que usted mismo podría anotar manualmente entrando en una web, pero automatizándolo, pudiendo entrar en cientos o miles de páginas en muy poco tiempo. Explicado de mala manera, es prácticamente lo mismo que tener a una persona entrando y apuntando en un bloc de notas el precio y el número de existencias de cada uno de los productos de una tienda, uno a uno. La ventaja de hacerlo virtual es que es mucho más rápido, más preciso y no necesita un bocadillo.

Si quiere el código fuente de Alicraper pregúnteme por él a través de victor@victorvollbrecht.com

Consideraciones legales

  • No porque usted pueda ver cierta información de manera pública desde su navegador significa que pueda guardar esa información y mucho menos usarla luego para fines comerciales.

  • Utilizar este tipo de herramientas genera un estrés considerable en el servidor objetivo. Una API es eficiente puesto que devuelve solo lo que se pide, e incluso con las APIs suelen existir limitaciones de cuántas peticiones se pueden hacer, sin embargo un web scraper hace lo mismo que usted, entrar en una página, y esto hace descargarlo todo, incluido lo que no se necesita. Puede ser bloqueado por exceder el límite de conexiones en un plazo de tiempo.

  • Al mismo tiempo que usted puede aprovecharse de esta herramienta, otros también pueden hacerlo con su sitio web. Controle qué información está proporcionando de forma pública y considere consultar con expertos para intentar minimizar los web scrapers de otras personas.

  • Si alguien le recomienda ofuscar su código para evitar que puedan recoger información de forma sencilla, niéguese. Tanto Google como otras empresas usan arañas para leer su sitio web, registrarlo y poder posicionarlo. Si ofusca su código estará dinamitando todo el SEO de su página.

Hasta pronto,
Victor a las 16:00

garabato final