"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi les fonctions BeautifulSoup comme « find » et « select_one » renvoient-elles « None » ?

Pourquoi les fonctions BeautifulSoup comme « find » et « select_one » renvoient-elles « None » ?

Publié le 2024-11-22
Parcourir:141

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

Pourquoi les fonctions BeautifulSoup renvoient parfois Aucun

Dans BeautifulSoup, les fonctions qui recherchent un seul résultat, telles que find et select_one, renvoient None si aucun élément correspondant n'est trouvé dans le HTML. Cela conduit à des exceptions AttributeError si le code suivant tente d'utiliser ces valeurs None comme s'il s'agissait d'éléments réels.

Exemples de retours None

Considérez l'extrait de code suivant :

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: Renvoie None car il n'y a pas de balise dans le code HTML.
  • soup.find('a', class_='brother') : renvoie Aucun car il n'y a pas de balise avec un attribut de classe de "brother."
  • soup.select_one('a.brother') : renvoie Aucun pour la même raison que soup.find(...).
  • soup.select_one('a.brother').text: Lève une AttributeError car None n'a pas de texte attribut.

Comment éviter AttributeError : l'objet 'NoneType' n'a pas d'attribut...

Pour éviter les exceptions AttributeError, il est essentiel de gérer les retours None avec élégance. Voici quelques bonnes pratiques :

  • Utilisez des instructions conditionnelles pour vérifier si le résultat est Aucun avant de tenter d'accéder aux attributs.
  • Attribuez le résultat à une variable et utilisez .has_attr() pour vérifier l'existence d'un attribut spécifique.
  • Utilisez les blocs try et except pour intercepter les exceptions AttributeError.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3