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