BeautifulSoup – Manejo de errores

A veces, durante el raspado de datos de sitios web, todos nos hemos enfrentado a varios tipos de errores en los que algunos no se comprenden y otros son errores sintácticos básicos. Aquí discutiremos los tipos de excepciones que se enfrentan durante la codificación del script.

Error durante la obtención del sitio web

Cuando estamos recuperando el contenido de cualquier sitio web, debemos ser conscientes de algunos de los errores que se producen durante la recuperación. Estos errores pueden ser HTTPError,  URLError, AttributeError o XMLParserError . Ahora discutiremos cada error uno por uno.

Error HTTP: 

HTTPError ocurre cuando estamos realizando operaciones de web scraping en un sitio web que no está presente o no está disponible en el servidor. Cuando proporcionamos el enlace incorrecto durante la solicitud al servidor y ejecutamos el programa, siempre muestra un error «Página no encontrada» en la terminal.

Ejemplo :

Python3

# importing modules
import requests
from urllib.error import HTTPError
 
url = 'https://www.geeksforgeeks.org/implementing-web-scraping-python-beautiful-soup/'
 
try:
    response = requests.get(url)
    response.raise_for_status()
except HTTPError as hp:
    print(hp)
     
else:
    print("it's worked")

Producción:
 

El enlace que proporcionamos a la URL funciona correctamente, no se produce ningún error. Ahora vemos HTTPError al cambiar el enlace.

Python

# importing modules
import requests
from urllib.error import HTTPError
 
url = 'https://www.geeksforgeeks.org/page-that-do-not-exist'
 
try:
    response = requests.get(url)
    response.raise_for_status()
except HTTPError as hp:
    print(hp)
     
else:
    print("it's worked")

Producción:

 

URLError:

Cuando solicitamos el sitio web incorrecto del servidor, significa que la URL que se nos proporciona para solicitar es incorrecta, entonces ocurrirá URLError. URLError siempre responde como un servidor que no encontró un error.

 Ejemplo:

Python3

# importing modules
import requests
from urllib.error import URLError
 
url = 'https://www.geeksforgeks.org/implementing-web-scraping-python-beautiful-soup/'
 
try:
  response = requests.get(url)
  response.raise_for_status()
except URLError as ue:
  print("The Server Could Not be Found")
   
else:
  print("No Error")
  

Producción:

Aquí vemos que el programa ejecuta la salida correcta e imprime «Sin error». Ahora cambiamos el enlace URL para mostrar el URLError: –

Python3

# importing modules
import requests
from urllib.error import URLError
 
url = 'https://www.geeksforgeks.org/implementing-web-scraping-python-beautiful-soup/'
 
try:
    response = requests.get(url)
    response.raise_for_status()
except URLError as ue:
    print("The Server Could Not be Found")
 
else:
    print("No Error")

Producción:

Error de atributo:

El AttributeError en BeautifulSoup se genera cuando se hace una referencia de atributo no válida o cuando falla una asignación de atributo. Cuando durante la ejecución del código pasamos el atributo incorrecto a una función, ese atributo no tiene una relación con esa función, entonces ocurre AttributeError. Cuando intentamos acceder a la etiqueta usando BeautifulSoup desde un sitio web y esa etiqueta no está presente en ese sitio web, BeautifulSoup siempre da un AttributeError.

Tomamos un buen ejemplo para explicar el concepto de AttributeError con web scraping usando BeautifulSoup:

Python3

# importing modules
import requests
import bs4
 
url = 'https://www.geeksforgeeks.org/implementing-web-scraping-python-beautiful-soup/'
 
# getting response from server
response = requests.get(url)
 
# extracting html
soup = bs4.BeautifulSoup(response.text, 'html.parser')
 
# for printing attribute error
print(soup.NoneExistingTag.SomeTag)

Producción:

Error del analizador XML:

Todos pasamos por un error del analizador XML durante la codificación de los scripts de raspado web, con la ayuda de BeautifulSoup analizamos el documento en HTML muy fácilmente. Si nos atascamos en el error del analizador, lo superamos fácilmente usando BeautifulSoup, y es muy fácil de usar.

Cuando estamos analizando el contenido HTML del sitio web, generalmente usamos ‘xml’   o ‘xml-xml’ en el parámetro del constructor BeautifulSoup. Fue escrito como el segundo parámetro después del documento HTML. 

Sintaxis: 

sopa = bs4.SopaHermosa(respuesta, ‘xml’)

o

sopa = bs4.HermosaSopa( respuesta, ‘ xml -xml’ )  

El error del analizador XML generalmente ocurre cuando no estamos pasando ningún elemento en la función find() y find_all() o falta un elemento en el documento. A veces da el corchete vacío [] o Ninguno como salida.

Python

import requests
import bs4
 
url = 'https://www.geeksforgeeks.org/implementing-web-scraping-python-beautiful-soup/'
response = requests.get(url)
soup = bs4.BeautifulSoup(response.text,'xml')
 
print(soup.find('div',class_='that not present in html content'))

Producción:
 

Publicación traducida automáticamente

Artículo escrito por mayurbadole2407 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 *