Pourquoi les fonctions BeautifulSoup renvoient parfois Aucun
Dans BeautifulSoup, les fonctions qui recherchent un seul résultat, telles que find et select_one, renvoient Aucun 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 Aucun car il n'y a pas de balise dans le HTML.
-
soup.find('a', class_='brother') : renvoie Aucun car il n'y a pas de balise balises avec un attribut de classe "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 d'attribut de texte.
Comment éviter AttributeError : 'NoneType ' L'objet 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.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn