"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 > ¿Por qué funciones BeautifulSoup como "buscar" y "seleccionar_uno" devuelven "Ninguno"?

¿Por qué funciones BeautifulSoup como "buscar" y "seleccionar_uno" devuelven "Ninguno"?

Publicado el 2024-11-22
Navegar:829

Why do BeautifulSoup functions like `find` and `select_one` return `None`?

Por qué las funciones de BeautifulSoup a veces no devuelven ninguno

En BeautifulSoup, las funciones que buscan un único resultado, como buscar y seleccionar_uno, devuelven Ninguno si no se encuentra ningún elemento coincidente en el HTML. Esto genera excepciones de AttributeError si el código posterior intenta usar estos valores Ninguno como si fueran elementos reales.

Ejemplos de devoluciones Ninguno

Considere el siguiente fragmento de código:

html_doc = "..."
soup = BeautifulSoup(html_doc, 'html.parser')
print(soup.sister)
print(soup.find('a', class_='brother'))
print(soup.select_one('a.brother'))
soup.select_one('a.brother').text
  • soup.sister: Devuelve Ninguno porque no hay una etiqueta en el HTML.
  • soup.find('a', class_='brother'): Devuelve Ninguno porque no hay etiquetas con un atributo de clase de "hermano."
  • soup.select_one('a.brother'): Devuelve Ninguno por el mismo motivo que sopa.find(...).
  • soup.select_one('a.brother').text: Genera un AttributeError porque Ninguno no tiene atributo de texto.

Cómo para evitar AttributeError: el objeto 'NoneType' no tiene atributo...

Para evitar excepciones de AttributeError, es esencial manejar los retornos de Ninguno correctamente. Estas son algunas de las mejores prácticas:

  • Utilice declaraciones condicionales para comprobar si el resultado es Ninguno antes de intentar acceder a los atributos.
  • Asigne el resultado a una variable y utilice .has_attr() para comprobar la existencia de un atributo específico.
  • Utilice los bloques try y except para detectar excepciones de AttributeError.
Ú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