Maison > développement back-end > Tutoriel Python > Comment éviter « TypeError : les indices de liste doivent être des entiers, pas des str » lors de l'extraction de valeurs d'attribut avec BeautifulSoup ?

Comment éviter « TypeError : les indices de liste doivent être des entiers, pas des str » lors de l'extraction de valeurs d'attribut avec BeautifulSoup ?

Patricia Arquette
Libérer: 2024-12-02 20:13:11
original
841 Les gens l'ont consulté

How to Avoid

Extraction d'une valeur d'attribut avec BeautifulSoup

Lorsque vous tentez d'extraire la valeur d'un attribut "value" spécifique dans une balise "input" à l'aide BeautifulSoup, un message d'erreur "TypeError : les indices de liste doivent être des entiers, pas des chaînes" peut apparaître. Le problème vient d'une incompréhension du fonctionnement de la méthode .find_all() de BeautifulSoup.

Comprendre .find_all()

.find_all() recherche toutes les occurrences d'une balise qui correspondent aux attributs spécifiés et renvoie une liste d'éléments. Cela signifie que lors de l'extraction de l'attribut d'une balise d'entrée avec un nom particulier, l'opération renvoie un élément qui est membre de cette liste, et non la valeur de l'attribut elle-même.

Correction du code

Pour rectifier l'erreur, il existe deux approches :

  1. Utiliser l'indexation : Accédez à l'élément de la liste en utilisant l'indexation, où le premier L'élément est représenté par input_tag[0]. Accédez ensuite à l'attribut 'value' de cet élément, par exemple :
input_tag = soup.find_all(attrs={"name": "stainfo"})
output = input_tag[0]['value']
Copier après la connexion
  1. Utilisez .find() : Au lieu de .find_all(), utilisez la méthode .find(), qui renvoie uniquement le premier élément correspondant :
input_tag = soup.find(attrs={"name": "stainfo"})
output = input_tag['value']
Copier après la connexion

En implémentant l'une ou l'autre de ces modifications, le code extraira correctement la valeur d'attribut souhaitée, éviter l'exception "TypeError".

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal