JPO : Webinar d'information sur nos formations → RDV mardi à 17h30.

Beautiful Soup : ¿cómo aprender a hacer web scraping en Python?

Como usuario de Internet, uno tiene acceso a mucha información sobre clientes, ofertas, cotizaciones de acciones, fenómenos físicos, etc. Los usuarios pueden leer estos datos, pero nos gustaría poder explotarlos transformándolos en un formato operativo para finalmente analizarlos y aprovecharlos. El web scraping es la técnica que permite extraer esta información en un formato que pueda ser utilizado por los programas informáticos. En este artículo descubriremos cómo hacerlo con Beautiful Soup.

Por ejemplo, es posible que se quiera tener acceso a todas las reseñas de un paquete de cartuchos de tinta negra HP en Amazon para poder hacer un análisis sintáctico, semántico y de sentimientos, y hacerse una opinión propia. El web scraping a partir de un localizador de tiendas (por ejemplo, un mapa) puede utilizarse para crear una lista de ubicaciones de negocios. También se pueden obtener las cotizaciones de las acciones para tomar mejores decisiones de inversión.

En cuanto a la parte de análisis de datos, existen técnicas específicas para cada tipo de datos y cada objetivo. El siguiente diagrama muestra el proceso logístico que conduce a una decisión informada :

Si estamos en la fase de recogida de datos, nos gustaría tener acceso a toda la información de una página web para poder realizar el estudio deseado.

Para ello, tenemos la posibilidad de copiarla «a mano» en otro documento. Pero se trata de una tarea minuciosa, ya que puede llevar mucho tiempo, por no hablar de las erratas que pueden producirse durante la introducción de datos. Como se ha mencionado en la introducción, el web scraping permite acceder a esta información en un formato utilizable.

Para la segunda fase, se recurre a los conocimientos técnicos de los Data Analysts, Data Engineers o Data Scientists para establecer los algoritmos y estudios estadísticos pertinentes.

Por ejemplo, en el caso de analizar los comentarios sobre un producto, se puede utilizar un algoritmo de PNL, que permite a las máquinas entender el lenguaje humano.

La interpretación de los datos suele hacerse en equipo, teniendo en cuenta la opinión de especialistas en la materia (por ejemplo, teniendo en cuenta la opinión del médico si se trabaja en un proyecto con datos médicos), para llegar finalmente a una toma de decisión óptima.

En este artículo, nos centraremos en la fase 1, ya que nos interesa la recuperación de datos.

En el siguiente párrafo, veremos una aplicación de la librería Beautiful Soup que permite hacer web scraping en Python.

En el siguiente párrafo, veremos una biblioteca que permite hacer web scraping y que está disponible en Python y que constituye una herramienta excelente (y fácil de manejar) para extraer información de datos no estructurados : Beautiful Soup.

Beautiful soup​

La biblioteca Beautiful Soup permite extraer contenido y transformarlo en una lista, matriz o diccionario de Python.

Esta biblioteca es muy popular porque tiene una documentación completa y sus funcionalidades están bien estructuradas. Además, existe una gran comunidad que ofrece soluciones variadas para utilizar esta biblioteca.

¿Por qué se llama "Beautiful Soup"?

Los sitios web están escritos en lenguajes informáticos HTML y CSS, que se utilizan para diseñar páginas web. HTML se utiliza para gestionar y organizar el contenido. La gestión de la apariencia de la página web (colores, tamaño del texto, etc.) se realiza mediante el lenguaje CSS.

En el campo del desarrollo web, «tag soup» («sopa de etiquetas») es un término despectivo para hablar de la escritura sintáctica o estructuralmente incorrecta del HTML de una página web.

Un ejemplo de web scraping con Beautiful soup

Pongamos un ejemplo sencillo para familiarizarnos con estos conceptos.

El siguiente ejemplo ha sido tomado de Kaggle y el objetivo es hacer un raspado o scraping de datos sobre la población del mundo. Los datos están disponibles en el sitio de Worldometer, un sitio de código abierto dirigido por un equipo internacional de desarrolladores e investigadores voluntarios, cuyo objetivo es poner las estadísticas globales a disposición de un amplio público en todo el mundo.

Esta es una visión general de la página que vamos a raspar

Nuestro objetivo es obtener esta tabla y convertirla en un DataFrame sin tener que copiar todos estos datos a mano.

  • En un Jupyter Notebook primero importamos las bibliotecas necesarias.
  • A continuación, creamos una variable URL en formato string (texto) que contiene el enlace a la página en cuestión.
  • Para preparar los datos, utilizamos la función requests.get() :
  • Ahora que los datos están preparados, se utiliza la función BeautifulSoup() para extraer el código HTML de esta página. En el argumento de esta función seleccionaremos el objeto .text.
  • En los datos variables que almacenamos el código HTML buscamos la palabra clave «table» con la función .find_all():

  • Utilizamos el comando .read_html(str()) para que la máquina lea el código HTML y luego recuperamos el primer y único elemento de este objeto (el array).

  • À présent on affiche les premiers  éléments, commande .head() du DataFrame :

  •  La base de datos también se puede exportar en formato csv con el siguiente comando :

Este comando crea un archivo en formato csv ubicado en la ruta indicada.

Para facilitar la manipulación del DataFrame, podemos pensar en cambiar los nombres de las columnas o eliminar algunas de ellas si no las utilizamos.

Ahora que hemos podido obtener los datos que se han puesto a disposición en el sitio de Worldometer y que están en formato DataFrame, podemos pasar a los demás pasos y hacer diferentes estudios. A continuación, podemos emprender el resto del proceso (Fases 2, 3 y 4, véase el diagrama de la introducción). En función de la naturaleza de los datos y de los objetivos que se pretenden alcanzar, se pueden realizar diferentes estudios: análisis exploratorio, propuesta de un modelo de Machine Learning, modelización de series temporales, etc.

Acabamos de ver un ejemplo que nos permite recuperar datos almacenados en una tabla, pero es importante recordar que dependiendo de la estructura de la página web en la que queramos raspar los datos, utilizaremos diferentes bibliotecas y funciones. La buena noticia es que hay muchos ejemplos disponibles en Internet en función del formato de la página y de la configuración de los datos que se quieren raspar.

Para resumir, el web scraping permite navegar por Internet de forma «inteligente» y, por tanto, es un recurso muy rico para cualquier área de investigación o interés personal.

El curso de Data Analyst de Datascientest te permite aprender y practicar las habilidades de web scraping y mucho más. Si quieres aprender sobre análisis de datos y adquirir conocimientos técnicos relacionados con este tema, no dudes en apuntarte al curso de Data Analyst

¿No está disponible?

Déjenos su dirección de correo electrónico para que podamos enviarle los nuevos artículos cuando se publiquen.