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 ?
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!