Maison >développement back-end >Tutoriel Python >Erreur « ResultSet » de Beautiful Soup : pourquoi « find_all » échoue-t-il sur les objets ResultSet ?
Beautiful Soup : résolution de l'erreur d'attribut 'ResultSet'
Lorsque vous essayez de gratter une structure tabulaire à l'aide de Beautiful Soup, vous pouvez rencontrer l'erreur : "L'objet 'ResultSet' n'a pas d'attribut 'find_all'". Pour résoudre ce problème, il est crucial de comprendre la structure du résultat renvoyé par la méthode find_all.
La nature des objets ResultSet
find_all renvoie une liste d'éléments correspondants. Dans votre cas, table contient une liste d'un élément, la table elle-même. Pour récupérer des lignes dans la table, vous devez appeler find_all sur l'élément, pas sur l'objet ResultSet :
# Correct: Iterate over table body rows for row in table[0].find_all('tr'): ...
Comprendre le message d'erreur
Le message d'erreur "L'objet 'ResultSet' n'a pas d'attribut 'find_all'" indique que vous essayez d'appeler find_all sur l'objet ResultSet lui-même. Cet objet n'a pas l'attribut find_all, car il ne s'agit pas d'une balise mais d'une collection de balises.
Exemple de solution
En fonction du code que vous avez fourni, le corrigé la version serait :
... table = soup.find_all(class_='dataframe')[0] # Select the table element for row in table.find_all('tr'): col = row.find_all('td') ...
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!