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 :
input_tag = soup.find_all(attrs={"name": "stainfo"}) output = input_tag[0]['value']
input_tag = soup.find(attrs={"name": "stainfo"}) output = input_tag['value']
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!