Maison >développement back-end >Tutoriel Python >Erreur « ResultSet » de Beautiful Soup : pourquoi « find_all » échoue-t-il sur les objets ResultSet ?

Erreur « ResultSet » de Beautiful Soup : pourquoi « find_all » échoue-t-il sur les objets ResultSet ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-26 08:28:08540parcourir

Beautiful Soup 'ResultSet' Error: Why Does `find_all` Fail on ResultSet Objects?

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!

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