Maison >développement back-end >Tutoriel Python >Pourquoi BeautifulSoup renvoie-t-il une erreur KeyError lors de la récupération d'éléments par classe et comment puis-je y remédier ?

Pourquoi BeautifulSoup renvoie-t-il une erreur KeyError lors de la récupération d'éléments par classe et comment puis-je y remédier ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-02 05:51:14602parcourir

Why Does BeautifulSoup Throw a KeyError When Retrieving Elements by Class and How Can I Fix It?

Gestion des erreurs : récupération d'éléments par classe à l'aide de BeautifulSoup

Lors de l'analyse d'éléments HTML avec l'attribut "class" à l'aide de Beautifulsoup, une erreur peut se produire . Cette erreur survient lors de la tentative de récupération de l'attribut « class » à l'aide de la syntaxe ["class"]. Par exemple, le code ci-dessous démontre ceci :

import BeautifulSoup
sdata = '...'
soup = BeautifulSoup(sdata)
mydivs = soup.findAll('div')
for div in mydivs:
    if (div["class"] == "stylelistrow"):
        print div

Lors de l'exécution, le script peut se terminer avec une erreur similaire à :

File "./beautifulcoding.py", line 130, in getlanguage
  if (div["class"] == "stylelistrow"):
File "/usr/local/lib/python2.6/dist-packages/BeautifulSoup.py", line 599, in __getitem__
   return self._getAttrMap()[key]
KeyError: 'class'

Solution : Utilisation de find_all

Pour résoudre cette erreur, le code peut être modifié pour utiliser la méthode find_all de BeautifulSoup pour affiner la recherche d'éléments avec une classe spécifique. L'extrait de code révisé suivant le démontre :

mydivs = soup.find_all("div", {"class": "stylelistrow"})

En utilisant la méthode find_all et en spécifiant un dictionnaire contenant l'attribut "class" comme clé et la valeur de classe souhaitée comme valeur, le script peut récupérer avec précision les éléments avec la classe spécifiée. Cette solution corrige efficacement l'erreur et permet la récupération d'éléments avec un attribut de classe souhaité.

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