Análisis de tablas y XML con BeautifulSoup

Prerrequisitos:  Web scrapping usando Beautiful Soup , XML Parsing

El raspado es una habilidad muy esencial que todos deberían aprender. Nos ayuda a eliminar datos de un sitio web o un archivo que el programador puede usar de otra manera hermosa. En este artículo, aprenderemos cómo extraer una tabla de un sitio web y XML de un archivo.
Aquí, desecharemos los datos usando el módulo Python de Beautiful Soup.

Módulos Requeridos:

  • bs4: Beautiful Soup es una biblioteca de Python para extraer datos de archivos HTML y XML. Se puede instalar usando el siguiente comando:
pip install bs4
  • lxml: Es una biblioteca de Python que nos permite manejar archivos XML y HTML. Se puede instalar usando el siguiente comando:
pip install lxml
  • request: Requests le permite enviar requests HTTP/1.1 de forma extremadamente sencilla. Se puede instalar usando el siguiente comando:
pip install request

Enfoque paso a paso para analizar tablas:

Paso 1: Primero, necesitamos importar módulos y luego asignar la URL.

Python3

# import required modules
import bs4 as bs
import requests
  
# assign URL
URL = 'https://www.geeksforgeeks.org/python-list/'

Paso 2: Cree un objeto BeautifulSoap para analizar.

Python3

# parsing
url_link = requests.get(URL)
file = bs.BeautifulSoup(url_link.text, "lxml")

Paso 3: luego encuentra la tabla y sus filas. 

Python3

# find all tables
find_table = file.find('table', class_='numpy-table')
rows = find_table.find_all('tr')

Paso 4: ahora cree un bucle para encontrar todas las etiquetas td en la tabla y luego imprima todas las etiquetas de datos de la tabla.

Python3

# display tables
for i in rows:
    table_data = i.find_all('td')
    data = [j.text for j in table_data]
    print(data)

A continuación se muestra el programa completo basado en el enfoque anterior:

Python3

# import required modules
import bs4 as bs
import requests
  
# assign URL
URL = 'https://www.geeksforgeeks.org/python-list/'
  
# parsing
url_link = requests.get(URL)
file = bs.BeautifulSoup(url_link.text, "lxml")
  
# find all tables
find_table = file.find('table', class_='numpy-table')
rows = find_table.find_all('tr')
  
# display tables
for i in rows:
    table_data = i.find_all('td')
    data = [j.text for j in table_data]
    print(data)

Producción:

Enfoque paso a paso para analizar archivos XML:

Paso 1: antes de continuar, puede crear su propio ‘archivo xml’ o simplemente puede copiar y pegar el código a continuación y nombrarlo como archivo test1.xml en su sistema.

<?xml version="1.0" ?>
<books>
  <book>
    <title>Introduction of Geeksforgeeks V1</title>
    <author>Gfg</author>
    <price>6.99</price>
  </book>
  <book>
    <title>Introduction of Geeksforgeeks V2</title>
    <author>Gfg</author>
    <price>8.99</price>
  </book>
  <book>
    <title>Introduction of Geeksforgeeks V2</title>
    <author>Gfg</author>
    <price>9.35</price>
  </book>
</books>

Paso 2: Cree un archivo python e importe módulos.

Python3

# import required modules
from bs4 import BeautifulSoup

Paso 3: Leer el contenido del XML.

Python3

# reading content
file = open("test1.xml", "r")
contents = file.read()

Paso 4: Analice el contenido del XML.

Python3

# parsing
soup = BeautifulSoup(contents, 'xml')
titles = soup.find_all('title')

Paso 5: Mostrar el contenido del archivo XML.

Python3

# parsing
soup = BeautifulSoup(contents, 'xml')
titles = soup.find_all('title')

A continuación se muestra el programa completo basado en el enfoque anterior:

Python3

# import required modules
from bs4 import BeautifulSoup
  
# reading content
file = open("test1.xml", "r")
contents = file.read()
  
# parsing
soup = BeautifulSoup(contents, 'xml')
titles = soup.find_all('title')
  
# display content
for data in titles:
    print(data.get_text())

Producción:

Publicación traducida automáticamente

Artículo escrito por skrg141 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *