Maison >développement back-end >Tutoriel Python >Pourquoi est-ce que je n'obtiens aucun résultat des fonctions .find et .select_one de BeautifulSoup ?

Pourquoi est-ce que je n'obtiens aucun résultat des fonctions .find et .select_one de BeautifulSoup ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-14 12:39:02667parcourir

Why Am I Getting None Results from BeautifulSoup's .find and .select_one Functions?

Aucun résultat des fonctions BeautifulSoup : compréhension et atténuation

Lorsque vous utilisez BeautifulSoup pour analyser du HTML, il n'est pas rare de rencontrer Aucun résultat de fonctions telles que .find et .select_one. Ces fonctions renvoient Aucun lorsqu'aucun élément correspondant n'est trouvé dans le document HTML. Par la suite, toute tentative d'accès aux attributs ou d'exécution d'opérations sur la valeur None génère une AttributeError car None ne dispose pas des attributs attendus.

Présentation des requêtes BeautifulSoup

BeautifulSoup propose deux types de requêtes :

  • Résultats multiples : Des fonctions telles que .find_all renvoient une liste de tous les éléments correspondants. S'il n'y a aucune correspondance, la liste est vide.
  • Résultat unique : Des fonctions comme .find et .select_one recherchent un seul élément spécifique. Si aucune correspondance n'est trouvée, le résultat est Aucun.

Éviter les erreurs NoneType avec les requêtes à résultat unique

Pour éviter les exceptions AttributeError lors de l'utilisation de requêtes à résultat unique, vérifiez si le résultat est Aucun avant de tenter d'accéder à ses attributs. Cela peut être fait avec une instruction if ou en utilisant le modèle try/sauf.

Par exemple, pour accéder en toute sécurité au texte de la première balise 'a' avec la classe 'sister', utilisez :

try:
    first_sister_link = soup.find('a', class_='sister')
    if first_sister_link:
        print(first_sister_link.text)
except AttributeError:
    print("No 'a' tag with class 'sister' found")

Conclusion

La gestion des requêtes à résultat unique dans BeautifulSoup nécessite de vérifier si le résultat est None pour éviter les erreurs NoneType. En employant des protections appropriées, les développeurs peuvent gérer avec élégance l'absence d'éléments correspondants et poursuivre leurs opérations d'analyse sans interruption exceptionnelle.

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