Conozca la manera de usar Beautiful Soup para raspado de datos web, con Python, en 3 minutos

¿Busca un tutorial que le ayude a iniciarse en el raspado de datos web (web scraping) usando de Beautiful Soup de Python? Ha acudido al lugar correcto, continúe leyendo y comience de inmediato
5 min read
How to Scrape with BeautifulSoup

En este artículo, abordaremos:

¿Cómo funciona el raspado de datos web?

Raspar datos de una página web significa solicitar datos específicos de una página web en particular. Cuando se raspan datos de una página, el código que escribe envía su solicitud al servidor que aloja la página de destino. El código descarga la página y solo extrae los elementos de la página que inicialmente se definió en la tarea de rastreo (crawling).
Por ejemplo, digamos que buscamos centrarnos en los datos de las etiquetas de título H3. Escribiríamos código para un raspador que busque específicamente esa información. El raspador funcionará en tres etapas:

Paso 1: enviar una solicitud al servidor para descargar el contenido del sitio.
Paso 2: filtrar el HTML de la página buscando las etiquetas H3.
Paso 3: copiar el texto dentro de las etiquetas en las que nos centramos, produciendo el resultado en el formato que se especificó en el código.

Es posible realizar tareas de raspado de datos web en varios lenguajes de programación con diferentes bibliotecas; sin embargo, uno de los métodos más populares y efectivos es usar Python con la biblioteca Beautiful Soup. En las secciones a continuación cubriremos las bases para realizar raspado de datos en Python usando Beautiful Soup.

¿Qué es Beautiful Soup??

Beautiful Soup ofrece métodos simples de navegación, buscando y modificando un árbol de análisis en archivos HTML, XML. Transforma un documento HTML complejo en un árbol de objetos Python. También convierte el documento a Unicode de manera automática, así no tendrá que pensar en codificación. Esta herramienta no solo le ayuda a raspar datos sino que también limpia los datos. Beautiful Soup soporta el analizador HTML incluido en la biblioteca estándar de Python y también soporta varios analizadores Python tercerizados como lxml o hml5lib.

Puede aprender más acerca del espectro completo de sus capacidades aquí: Documentación de Beautiful Soup.

Instalación de Requests y de Beautiful Soup

Para instalar Beautiful Soup, necesita pip o cualquier otro instalador Python. También puede usar su jupyter lab. En esta publicación, usaremos pip por su conveniencia. Abra su terminal o Jupyter Lab y escriba:command line syntax for pip install beautifulsoup4 for Beautiful Soup Libraries in Python

También podría desear instalar un analizador (parser) que interprete HTML, por ejemplo, “html5lib”. Para realizarlo, ejecute en la terminal el código que se muestra a continuación:command line for installing html5lib using pip install for Python
Instalación de solicitudesscreenshot of syntax for pip install requests for python
Otro método es descargar las bibliotecas de manera manual siguiendo estos links:

1: Requests

2: Hml5lib

3: Beautifulsoup4

Pasos simples para raspar datos en Python usando Requests y Beautiful Soup

Paso 1: necesita enviar una solicitud HTTP al servidor de la página donde desea realizar raspado de datos. El servidor responde enviando el contenido HTML de la página web. Dado que usamos Python para nuestras solicitudes, necesitamos una biblioteca HTTP tercerizada y usaremos Requests.
Comience por importar la biblioteca de Requests y hacer una solicitud GET simple a la URL (elegimos https://www.brainyquote.com/topics/motivational-quotes porque tiene una estructura HTML clara y nos permitirá demostrar el potencial de Beautiful Soup con facilidad) python code to import requests and then scrape a given URLSi recibe una respuesta [200], quiere decir (en esencia) que el sitio respondió con un código de respuesta HTTP 200 OK y nos envió el contenido HTML de la página.

Hagamos de nuevo la misma solicitud, pero esta vez almacenaremos el resultado en una variable llamada “r” e imprimiremos su contenido.scraping using requests and saving the URL as a variable called rEl resultado debe ser el código HTML completo para esta página. Como es evidente, no tiene estructura y Beautiful Soup nos ayudará a limpiarlo y a obtener los datos que necesitamos.

Paso 2: ahora que tenemos el contenido HTML, necesitamos analizar los datos. Para ese propósito, usaremos Beautiful Soup con un analizador html5libimporting beautiful soup from bs4 - command line syntaxNecesitamos pasar dos valores a Beautiful Soup():

#1: String de HTML desde el sitio web; “r.content”

#2: Cuál analizador HTML usar; “html5lib”

Paso 3: en este punto, vaya al sitio donde realiza raspado de datos. Abra Devtools (F12) y vaya a la pestaña Elementos. Buscaremos la capa de la tabla superior.nice chunk of scraped data using beautiful soup

command line syntax for configuring a table in beautiful soup using python

Imprimiremos la tabla para tener una mejor idea de lo que tenemos hasta ahora y usaremos .prettify()command line for displaying the table in the console using prettify

Su resultado debería verse similar a esto:

Ahora, buscamos los datos que necesitamos. En este ejemplo, solo queremos el texto entrecomillado y el nombre del autor. Como se puede ver, todos estos datos están en

Ejecutemos un loop en todas las instancias de esta clase y obtengamos todo el contenido entrecomillado en nuestra tabla.command line for looping through all the data to find the rows you need for the table

Ahora, solo debería teneren cada instancia de bucle que tenga disponible. Puede poner esto a prueba ejecutando print(row) en el bucle.

finding the alt-text inside the scraped data

Buscamos la información existente bajo la clave “img alt” así que crearemos una variable entre comillas y le asignaremos estos datos.

assigning data to the alt text

Como se puede ver, está envuelto en una declaración “try”. En este caso, si una de las filas no tiene los datos que busca, no tendrá un error y el bucle continuará avanzando. También se dividieron los resultados en “-”. Como se mostró antes, el nombre del autor y el texto se separan con “-”. Usémoslo para separar los dos y dividirlos.example of alt-attribute text being filled with the data providedEso es todo, ha terminado. Así es como se debería ver su variable entrecomillada:

 

example of the data after it has applied the alt-text scrape

Al finalizar este proceso, puede guardar sus datos en un archivo y su código se deberá ver similar a:Screen shot of the final Python code and how it should look