Maison > Article > développement back-end > Pourquoi BeautifulSoup ne renvoie-t-il parfois aucun message et comment puis-je éviter les erreurs d'attribut ?
Lorsque vous utilisez BeautifulSoup pour analyser du HTML, vous pouvez rencontrer Aucun résultat ou exceptions AttributeError liées aux objets NoneType. Celles-ci se produisent lorsqu'un élément ou un attribut spécifique est introuvable dans les données analysées.
BeautifulSoup fournit à la fois des requêtes à résultat unique et à résultats multiples. Les méthodes comme .find_all qui prennent en charge plusieurs résultats renvoient une liste vide si aucun élément correspondant n'est trouvé.
Cependant, des méthodes comme .find et .select_one, qui attendent un seul résultat, renvoient Aucun si aucune correspondance n'est trouvée. Ceci est différent des autres langages de programmation où une exception peut être levée à la place.
Pour éviter les erreurs AttributeError lorsque vous travaillez avec des résultats Aucun à partir de méthodes à résultat unique :
Considérez les exemples de code de la question :
print(soup.sister) # Returns None because no <sister> tag exists print(soup.find('a', class_='brother')) # Returns None because no <a> tag with class="brother" exists print(soup.select_one('a.brother')) # Returns None, same reason as above soup.select_one('a.brother').text # Throws AttributeError because 'None' has no 'text' attribute
Pour gérer correctement ces scénarios, utilisez les techniques suivantes :
if soup.sister is not None: print(soup.sister.name) # Safely accesses the tag name try: print(soup.find('a', class_='brother').text) except AttributeError: print("No 'brother' class found") # Catches the potential error brother_text = soup.select_one('a.brother') or "Brother not found" # Assigns a default value if not found
En suivant ces directives, vous pouvez empêcher les exceptions AttributeError et gérer efficacement les résultats Aucun lorsque vous utilisez BeautifulSoup pour analyser le HTML.
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!