20 Octubre 2016 Webscraping

Uso de API

Varias páginas web ofrecen API para descargar información en algún formato estandarizado y así facilitar a usuarios a descargar información desde sus páginas. Las ventajas para empresas como Analyze que descargan información son:

  • Velocidad: generalmente las API son más rápidas para generar la información y no es necesario descargar toda una página web.
  • Orden: la información que entrega una API está estructurada, lo que facilita leer los datos.

Sin embargo, aunque en la teoría las API deberían ser la opción ideal, en la práctica, en nuestra experiencia, preferimos en muchos casos obviar las API y utilizar técnicas de webscraping de las páginas web.

  • Acceso: muchas API requieren estar registrado para obtener un Key para acceder a la API; y en algunos restringen el número de accesos diarios. En algunos casos nos hemos topado con casos donde, sin previo aviso, el proveedor modifica las condiciones para acceder a las API; teniendo episodios donde no podemos descargar la información.
  • Robustez: el funcionamiento de las API no suele ser una prioridad. En varios casos, las API son parte de un proyecto que se realiza en algún momento en la empresa u organización, sin embargo el mantenimiento no suele ser una prioridad. Si el servicio de API deja de funcionar por cierto periodo, no genera la misma urgencia de solucionar el problema como fuese el caso de dejar funcionar la página web. De la misma forma, nuevos datos (por ejemplo empresa agrega precio de envío en la página web de su retail) que se incluyen en la página web, suelen no aparecer en la API hasta que se haga un nuevo proyecto de API (que puede tomar meses) para modificar eso.
  • Completitud: varias API no tienen la misma cantidad de información que en la página web, o en algunos casos hasta hay diferencia en los datos. Las API tampoco permiten generalmente desacargar imágenes de las páginas (por ejemplo imágenes del producto)

Nuestra recomendación es para que las empresas hagan un esfuerzo para tener API funcionales y con buen mantenimiento. Algunas empresas creen que es mejor no tener API para evitar que otros puedan acceder fácilmente a los datos. Sin embargo esa es una solución del tipo “sillón de don Otto”. Al no exister API, los interesados harán webscraping a las páginas web, lo cual implica un costo mayor para los dueños de la páginas web. El webscraping genera un mayor uso de recursos de procesamiento de los servidores de la página web que en comparación con la API. El procesamiento de una página web generalmente también incluye paginación, cargar imágenes, generar el html, cargar archivos JS, varias cargas AJAX. Ciertamente existen metodologías para el que hace webscraping para reducir esto, sin embargo scrapers novatos (o al utilizar softwares de webscraping existentes en el mercado) no necesariamente las aplican.

Por ejemplo, casi todas las páginas muestran la información en máximo 20 o 50 ítems por página y no existe la opción de mostrar todas en una carga. Esto implica tener que cargar varias veces la página web, cada vez con otros 20 ítems, sobrecargando el servicio web. Desde el punto de vista del programador webscraping, el único cambio es un línea de código adicional con una expresión while().

Al hacer webscraping, también se perturban métricas propias de las páginas web. Por ejemplo se aumenta artificialmente el número de visitas a cada página o se está pagando por publicidad web por páginas solamente vistas por “robots” de webscraping.

En conclusión

Mantener API actualizadas y completas puede generar beneficios, ya que los que quieran obtener información utilizarán las API y no sobrecargarán el servicio web ( y no genera estadísticas falsas). Tratar de poner barreras al webscraping puede evitar que amateurs puedan hacer el webscraping, pero no son barreras para empresas con experiencia. El mayor impacto será sobrecargar el servicio web.