"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Cómo se utiliza Beautiful Soup para extraer datos de la Web pública

Cómo se utiliza Beautiful Soup para extraer datos de la Web pública

Publicado el 2024-08-01
Navegar:664

How Beautiful Soup is used to extract data out of the Public Web

Beautiful Soup es una biblioteca de Python que se utiliza para extraer datos de páginas web. Crea un árbol de análisis para analizar documentos HTML y XML, lo que facilita la extracción de la información deseada.

Beautiful Soup proporciona varias funcionalidades clave para el web scraping:

  1. Navegando por el árbol de análisis: Puede navegar fácilmente por el árbol de análisis y buscar elementos, etiquetas y atributos.
  2. Modificación del árbol de análisis: Le permite modificar el árbol de análisis, lo que incluye agregar, eliminar y actualizar etiquetas y atributos.
  3. Formato de salida: Puede convertir el árbol de análisis nuevamente en una cadena, lo que facilita guardar el contenido modificado.

Para usar Beautiful Soup, necesitas instalar la biblioteca junto con un analizador como lxml o html.parser. Puedes instalarlos usando pip

#Install Beautiful Soup using pip.
pip install beautifulsoup4 lxml

Manejo de la paginación

Cuando se trata de sitios web que muestran contenido en varias páginas, el manejo de la paginación es esencial para extraer todos los datos.

  1. Identifique la estructura de paginación: Inspeccione el sitio web para comprender cómo está estructurada la paginación (por ejemplo, botón de página siguiente o enlaces numerados).
  2. Iterar sobre páginas: Utilice un bucle para iterar a través de cada página y extraer los datos.
  3. Actualizar la URL o los parámetros: Modifique la URL o los parámetros para recuperar el contenido de la página siguiente.
import requests
from bs4 import BeautifulSoup

base_url = 'https://example-blog.com/page/'
page_number = 1
all_titles = []

while True:
    # Construct the URL for the current page
    url = f'{base_url}{page_number}'
    response = requests.get(url)
    soup = BeautifulSoup(response.content, 'html.parser')

    # Find all article titles on the current page
    titles = soup.find_all('h2', class_='article-title')
    if not titles:
        break  # Exit the loop if no titles are found (end of pagination)

    # Extract and store the titles
    for title in titles:
        all_titles.append(title.get_text())

    # Move to the next page
    page_number  = 1

# Print all collected titles
for title in all_titles:
    print(title)

Extracción de datos anidados

A veces, los datos que necesitas extraer están anidados en varias capas de etiquetas. Aquí se explica cómo manejar la extracción de datos anidados.

  1. Navegue a etiquetas principales: busque las etiquetas principales que contienen los datos anidados.
  2. Extraer etiquetas anidadas: Dentro de cada etiqueta principal, busque y extraiga las etiquetas anidadas.
  3. Iterar a través de etiquetas anidadas: Iterar a través de las etiquetas anidadas para extraer la información requerida.
import requests
from bs4 import BeautifulSoup

url = 'https://example-blog.com/post/123'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')

# Find the comments section
comments_section = soup.find('div', class_='comments')

# Extract individual comments
comments = comments_section.find_all('div', class_='comment')

for comment in comments:
    # Extract author and content from each comment
    author = comment.find('span', class_='author').get_text()
    content = comment.find('p', class_='content').get_text()
    print(f'Author: {author}\nContent: {content}\n')

Manejo de solicitudes AJAX

Muchos sitios web modernos utilizan AJAX para cargar datos dinámicamente. Manejar AJAX requiere diferentes técnicas, como monitorear las solicitudes de red utilizando herramientas de desarrollo del navegador y replicar esas solicitudes en su raspador.

import requests
from bs4 import BeautifulSoup

# URL to the API endpoint providing the AJAX data
ajax_url = 'https://example.com/api/data?page=1'
response = requests.get(ajax_url)
data = response.json()

# Extract and print data from the JSON response
for item in data['results']:
    print(item['field1'], item['field2'])

Riesgos del web scraping

El web scraping requiere una cuidadosa consideración de los riesgos legales, técnicos y éticos. Al implementar las medidas de seguridad adecuadas, puede mitigar estos riesgos y realizar el web scraping de manera responsable y efectiva.

  • Infracciones de los Términos de servicio: Muchos sitios web prohíben explícitamente el scraping en sus Términos de servicio (ToS). La violación de estos términos puede dar lugar a acciones legales.
  • Problemas de propiedad intelectual: extraer contenido sin permiso puede infringir los derechos de propiedad intelectual, lo que lleva a disputas legales.
  • Bloqueo de IP: los sitios web pueden detectar y bloquear direcciones IP que exhiben un comportamiento de raspado.
  • Prohibiciones de cuentas: Si el scraping se realiza en sitios web que requieren autenticación de usuario, la cuenta utilizada para el scraping podría ser prohibida.

Beautiful Soup es una poderosa biblioteca que simplifica el proceso de web scraping al proporcionar una interfaz fácil de usar para navegar y buscar documentos HTML y XML. Puede manejar diversas tareas de análisis, lo que la convierte en una herramienta esencial para cualquiera que busque extraer datos de la web.

Declaración de liberación Este artículo se reproduce en: https://dev.to/marcosconci/how-beautiful-soup-is-used-to-extract-data-out-of-the-public-web-51gg?1 Si hay alguna infracción , comuníquese con Study_golang @ 163.com eliminar
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3