Sopita de datos con espinacas (Web scraping)

Abstracto

En esta charla explicaré las bases del web scraping, para luego profundizar concretamente en las buenas prácticas que deberíamos utilizar al hacer nuestros scripts de scraping, tomando en cuenta la eficiencia de nuestro script y tratando de afectar lo menos posible a nuestra fuente de información.

Descripción

En estos tiempos los datos tienen un papel muy importante en la industria y la necesidad de obtener estos datos se está volviendo cada vez más grande. Una gran parte de esta información la podemos obtener a través de internet. Algunos de estos datos están expresados por ejemplo, como comentarios o hashtags en redes sociales, otros son textos planos en páginas web y otros más pueden ser tablas en sitios web “antiguos” sin más formato que el de un HTML simple. Pero no importando el formato, lo que más nos interesa es la información que podemos obtener de esta fuente, información a la que podremos hacerle análisis y sacar conclusiones o bien aumentar nuestra base de datos para tenerlos disponibles de una forma ordenada y fácil de buscar. Algunas veces los mismos sitios nos proveen esa información que tienen almacenada por medio de API’s o poniendo a disposición documentos que podemos descargar fácilmente, pero a veces no hay otra forma de obtenerla más que inspeccionando y copiando esta información directamente desde la página web.

Hasta aquí todo es felicidad, pero qué pasa cuando la información que necesitamos obtener está distribuida en cientos de páginas o rutas distintas y además está desordenada y tiene datos extras que no nos interesan? Es entonces cuando la automatización de la inspección y extracción de estos datos entra en juego!. En esta charla explicaré en base a la experiencia con un ejemplo real como en nuestro equipo de desarrollo utilizamos técnicas por medio de las cuales es más fácil y eficiente hacer scraping a una página web tomando muy en cuenta que debemos afectar lo menos posible a la página que vamos a inspeccionar. Para lograrlo utilizaremos Python 3.x , Beautiful Soup 4 y URLlib3. Al finalizar la charla los asistentes tendrán una idea concreta de lo que se trata el scraping y aprenderán tips basados en la experiencia propia que les ayudarán a eficientar y reutilizar sus scripts de scraping.

Cronograma:

Acerca de mi: 1 minuto

  • Quien soy.

  • En que trabajo .

  • A qué comunidades pertenezco.

Introducción a Scraping: 5 minutos

  • Que significa Web scraping.

  • Que esperamos al momento de ir a una página a buscar información (Está ordenada o desordenada?. La información que busco está etiquetada de una forma en específico? y si no entonces qué debo hacer para poder identificarla).

  • Qué librerías nos ayudan a hacerlo más sencillo.

Breve descripción de un HTML: 2 minutos

  • Cuál es la estructura común de un HTML.

  • Que es un DOM.

  • Que es un TAG.

  • Como se ve una tabla.

Ejemplo real en aplicación: 15 minutos

  • Para poder explicar de manera más práctica tomaré un ejemplo real de una de las fuentes de información de donde podemos obtener productos con sus detalles. podremos visualizar su robots.txt real y analizarlo, luego explicaré el código que utilicé para obtener los títulos, descripciones, precios e imágenes de los productos de esta página. Tanto en una búsqueda por páginación de todos los elementos como una búsqueda por id’s de los productos.

  • Luego utilizaremos una página distinta para obtener todas las tablas que se encuentran en ella y filtrar columnas según nuestros requerimientos.

Qué no debemos hacer: 2 minutos

  • Mostraré las prácticas comunes de scraping que suelen afectar más de lo necesario a las páginas web de donde vamos a obtener los datos.
  • Explicaré la importancia ética de tomar en cuenta el robots.txt.
  • Mostraré un ejemplo de cómo escribir un código reutilizable para hacer buscar contenido específicos en una página web.

Breve explicación del repo que compartiré con scripts para scraping: 3 minutos

  • Mostraré en breve el código que contiene el repositorio y lo que hacen los distintos scripts que básicamente es la base de los conocimientos que di a conocer anteriormente pero aplicados a un código de scraping reutilizable con configuraciones customizables.

Conclusiones: 2 minutos

  • En conclusión, que no debemos hacer, que si debemos hacer y que es muy importante tener en cuenta al momento de hacer un script de scraping.