¿Cómo instalar Beautiful Soup y usarlo para proyectos de Web Scraping?

En el mundo actual basado en datos, el método tradicional de recopilación manual de datos está obsoleto. Una computadora con conexión a Internet en cada escritorio hizo de la web una gran fuente de datos. Por lo tanto, el método moderno más eficiente y que ahorra tiempo para la recopilación de datos es el web scraping. Y cuando se trata de web scraping, Python tiene una herramienta llamada Beautiful Soup. En esta publicación, lo guiaré a través de los pasos de instalación de Beautiful Soup para comenzar con el web scraping.

Antes de instalar y trabajar con Beautiful Soup, averigüemos por qué debería hacerlo.

¿Qué es una sopa hermosa?

Supongamos que está investigando el «impacto de COVID en la salud de las personas» y ha encontrado algunas páginas web que contienen datos relevantes. Pero, ¿qué sucede si no le ofrecen una opción de descarga con un solo clic para tomar prestados sus datos? Aquí entra en juego la Sopa Hermosa.

Beautiful Soup se encuentra entre el índice de bibliotecas de Python para extraer los datos de sitios específicos. Es más cómodo recuperar datos de páginas HTML o XML.

Leonard Richardson sacó a la luz la idea de Beautiful Soup para raspar la web en 2004. Pero su contribución al proyecto continúa hasta hoy. Con orgullo actualiza cada nuevo lanzamiento de Beautiful Soup en su cuenta de Twitter.

Aunque Beautiful Soup para web scraping se desarrolló con Python 3.8, también funciona perfectamente con Python 3 y Python 2.4.

A menudo, los sitios web utilizan la protección captcha para rescatar sus datos de las herramientas de inteligencia artificial. En este caso, algunos cambios en el encabezado ‘agente de usuario’ en Beautiful Soup o el uso de API de resolución de Captcha pueden imitar un navegador confiable y engañar a la herramienta de detección.

Sin embargo, si no tiene tiempo para explorar Beautiful Soup o desea que el raspado se realice de manera eficiente y fácil, entonces no debe dejar de consultar esta API de raspado web, donde puede proporcionar una URL y obtener los datos en tus manos.

Si ya es programador, usar Beautiful Soup para raspar no será desalentador debido a su sintaxis sencilla para navegar por las páginas web y extraer los datos deseados en función del análisis condicional. Al mismo tiempo, también es amigable para los novatos.

Aunque Beautiful Soup no es para raspado avanzado, funciona mejor para raspar los datos de archivos escritos en lenguajes de marcas.

La documentación clara y detallada es otro punto culminante de Beautiful Soup.

Encontremos una manera fácil de obtener Sopa hermosa en su máquina.

¿Cómo instalar Beautiful Soup para Web Scraping?

Pip: un administrador de paquetes de Python sin esfuerzo desarrollado en 2008 es ahora una herramienta estándar entre los desarrolladores para instalar cualquier biblioteca o dependencia de Python.

Pip viene por defecto con la instalación de versiones recientes de Python. Por lo tanto, si tiene versiones recientes de Python instaladas en su sistema, está listo para comenzar.

Abra el símbolo del sistema y escriba el siguiente comando pip para instalar la hermosa sopa al instante.

pip install beautifulsoup4

Verá algo similar a la siguiente captura de pantalla en su pantalla.

Asegúrese de haber actualizado el instalador de PIP a la última versión para evitar errores comunes.

El comando para actualizar el instalador de pip a la última versión es:

pip install --upgrade pip

Hemos cubierto con éxito la mitad del terreno en esta publicación.

Ahora tiene Beautiful Soup instalado en su máquina, así que profundicemos en cómo usarlo para web scraping.

¿Cómo Importar y Trabajar con Beautiful Soup para Web Scraping?

Escriba el siguiente comando en su IDE de python para importar Soup hermosa al script de python actual.

from bs4 import BeautifulSoup

Ahora Beautiful Soup está en su archivo de Python para usar para raspar.

Veamos un ejemplo de código para aprender cómo extraer los datos deseados con Soup hermosa.

Podemos decirle a beautiful Soup que busque etiquetas HTML específicas en el sitio web de origen y extraiga los datos presentes en esas etiquetas.

En este artículo, utilizaré marketwatch.com, que actualiza los precios de las acciones en tiempo real de varias empresas. Extraigamos algunos datos de este sitio web para familiarizarse con la biblioteca Beautiful Soup.

Importar paquete de “solicitudes” que nos permitirá recibir y responder solicitudes HTTP y “urllib” para cargar la página web desde su URL.

from urllib.request import urlopen
import requests

Guarde el enlace de la página web en una variable para que pueda acceder fácilmente a él más tarde.

url="https://www.marketwatch.com/investing/stock/amzn"

El siguiente sería usar el método «urlopen» de la biblioteca «urllib» para almacenar la página HTML en una variable. Pasa la URL a la función “urlopen” y guarda el resultado en una variable.

page = urlopen(url)

Cree un objeto Beautiful Soup y analice la página web deseada usando «html.parser».

soup_obj = BeautifulSoup(page, 'html.parser')

Ahora todo el script HTML de la página web de destino se almacena en la variable ‘soup_obj’.

Antes de continuar, echemos un vistazo al código fuente de la página de destino para saber más sobre el script HTML y las etiquetas.

Haga clic con el botón derecho en cualquier parte de la página web con el mouse. Luego encontrará una opción de inspección, como se muestra a continuación.

Haga clic en inspeccionar para ver el código fuente.

En el código fuente anterior, puede encontrar etiquetas, clases e información más específica sobre cada elemento visible en la interfaz del sitio web.

El método «buscar» en beautiful Soup nos permite buscar las etiquetas HTML solicitadas y recuperar los datos. Para hacer esto, le damos el nombre de la clase y las etiquetas al método que extrae datos específicos.

Por ejemplo, «Amazon.com Inc.» que se muestra en la página web tiene el nombre de clase: ‘company__name’ etiquetado bajo ‘h1’. Podemos ingresar esta información en el método ‘buscar’ para extraer el fragmento HTML relevante en una variable.

name = soup_obj.find('h1', attrs={'class': 'company__name'})

Vamos a generar el script HTML almacenado en la variable «nombre» y el texto requerido en la pantalla.

print(name)

print(name.text)

Puede presenciar los datos extraídos impresos en la pantalla.

Web Scrape el sitio web de IMDb

Muchos de nosotros buscamos clasificaciones de películas en el sitio de IMBb antes de ver una película. Esta demostración le dará una lista de las películas mejor calificadas y lo ayudará a acostumbrarse a la hermosa Soup para web scraping.

Paso 1: importa las hermosas bibliotecas Soup y Requests.

from bs4 import BeautifulSoup
import requests

Paso 2: vamos a asignar la URL que queremos raspar a una variable llamada ‘url’ para facilitar el acceso en el código.

El paquete de «solicitudes» se utiliza para obtener la página HTML de la URL.

url = requests.get('https://www.imdb.com/search/title/?count=100&groups=top_1000&sort=user_rating')

Paso 3: en el siguiente fragmento de código, analizaremos la página HTML de la URL actual para crear un objeto de sopa hermosa.

soup_obj = BeautifulSoup(url.text, 'html.parser')

La variable “soup_obj” ahora contiene el script HTML completo de la página web deseada, como en la siguiente imagen.

Inspeccionemos el código fuente de la página web para encontrar el script HTML de los datos que queremos extraer.

Pase el cursor sobre el elemento de la página web que desea extraer. A continuación, haga clic derecho sobre él y seleccione la opción de inspección para ver el código fuente de ese elemento específico. Las siguientes imágenes lo guiarán mejor.

La clase ‘lister-list’ contiene todos los datos relacionados con películas mejor calificados como subdivisiones en etiquetas div sucesivas.

En el script HTML de cada tarjeta de película, en la clase ‘modo de elemento de lista-avanzado’, tenemos una etiqueta ‘h3’ que almacena el nombre de la película, el rango y el año de lanzamiento, como se destaca en la imagen a continuación.

Nota: El método «buscar» en beautiful Soup busca la primera etiqueta que coincida con el nombre de entrada que se le ha dado. A diferencia de «buscar», el método «buscar_todos» busca todas las etiquetas que coincidan con la entrada dada.

Paso 4: puede usar los métodos «buscar» y «buscar_todos» para guardar el script HTML del nombre, el rango y el año de cada película en una variable de lista.

top_movies = soup_obj.find('div',attrs={'class': 'lister-list'}).find_all('h3')

Paso 5: recorra la lista de películas almacenadas en la variable: «top_movies» y extraiga el nombre, el rango y el año de cada película en formato de texto de su secuencia de comandos HTML usando el código a continuación.

for movie in top_movies:
    movi_name = movie.a.text
    rank = movie.span.text.rstrip('.')
    year = movie.find('span', attrs={'class': 'lister-item-year text-muted unbold'})
    year = year.text.strip('()')
    print(movi_name + " ", rank+ " ", year+ " ")

En la captura de pantalla de salida, puede ver la lista de películas con su nombre, rango y año de lanzamiento.

Puede mover sin esfuerzo los datos impresos a una hoja de Excel con algún código de Python y usarlo para su análisis.

Ultimas palabras

Esta publicación lo guía en la instalación de Soup hermosa para web scraping. Además, los ejemplos de extracción que he mostrado deberían ayudarlo a comenzar con Beautiful Soup.

Como está interesado en cómo instalar Beautiful Soup para el web scraping, le recomiendo que consulte esta guía comprensible para saber más sobre el web scraping usando Python.