BeautifulSoup es un módulo de Python que se utiliza para encontrar contenidos/etiquetas de sitios web específicos de un sitio web raspado que se puede raspar con cualquier módulo, como requests o scrapy . Recuerde que BeautifulSoup no raspa un sitio web, pero procesa y muestra los contenidos raspados por otros módulos en una forma legible. Entonces, para entender cómo podemos raspar los datos en un sitio web, lo entenderíamos con un ejemplo.
Módulos necesarios
Primero, necesitamos instalar todos estos módulos en nuestra computadora.
- BeautifulSoup: nuestro módulo principal contiene un método para acceder a una página web a través de HTTP.
pip install bs4
- lxml: Biblioteca auxiliar para procesar páginas web en lenguaje python.
pip install lxml
- requests: hace que el proceso de envío de requests HTTP sea impecable. El resultado de la función
pip install requests
Comencemos raspando un sitio web de muestra y veamos cómo raspar solo una sección de la página.
Paso 1: Importamos nuestro módulo beautifulsoup y requests. Declaramos Header y agregamos un agente de usuario. Esto asegura que el sitio web de destino que vamos a raspar no considere el tráfico de nuestro programa como spam y finalmente sea bloqueado por ellos.
Python3
from bs4 import BeautifulSoup,SoupStrainer import requests URL = "https://en.wikipedia.org/wiki/Nike,_Inc." HEADERS = ({'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36\ (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36', 'Accept-Language': 'en-US, en;q=0.5'}) webpage = requests.get(URL, headers= HEADERS)
Paso 2: Ahora usamos SoupStrainer que importamos en la primera línea para filtrar solo las partes del sitio web que necesitamos. Tenga en cuenta que el guión bajo después de la clase no estaría allí en caso de que filtremos los elementos en función de sus id. En este caso, solo queremos analizar elementos que tengan un atributo de clase de «mw-headline». La última línea imprime el contenido analizado de una manera bonita.
La clase SoupStrainer indica qué parte extraer y el árbol de análisis consiste solo en estos elementos. Solo tenemos que pasar el objeto SoupStrainer al constructor BeautifulSoup como argumento parse_only .
Python3
soup = BeautifulSoup(webpage.content, "lxml", parse_only = SoupStrainer( 'span', class_ = 'mw-headline')) print(soup.prettify())
Código completo:
Python3
from bs4 import BeautifulSoup,SoupStrainer import requests URL = "https://en.wikipedia.org/wiki/Nike,_Inc." HEADERS = ({'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 \ (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36', 'Accept-Language': 'en-US, en;q=0.5'}) webpage = requests.get(URL, headers= HEADERS) soup = BeautifulSoup(webpage.content, "lxml", parse_only = SoupStrainer( 'span', class_ = 'mw-headline')) print(soup.prettify())
Producción:
Publicación traducida automáticamente
Artículo escrito por saikatsahana91 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA