J'essaye d'extraire le contenu d'un seul attribut de «valeur» dans une balise «d'entrée» spécifique sur une page Web. J'utilise le code suivant:
import urllib
f = urllib.urlopen("http://58.68.130.147")
s = f.read()
f.close()
from BeautifulSoup import BeautifulStoneSoup
soup = BeautifulStoneSoup(s)
inputTag = soup.findAll(attrs={"name" : "stainfo"})
output = inputTag['value']
print str(output)
J'obtiens un TypeError: les index de liste doivent être des entiers, pas str
même si d'après la documentation de Beautifulsoup, je comprends que les chaînes ne devraient pas être un problème ici ... mais ce n'est pas un spécialiste et j'ai peut-être mal compris.
Toute suggestion est grandement appréciée! Merci d'avance.
python
parsing
attributes
beautifulsoup
Barnabe
la source
la source
output = inputTag[0].contents
inputTag[0].get('value')
place deinputTag[0]['value']
pour empêcher aucun pointeur au cas où la balise ne serait pas un attribut de valeurDans
Python 3.x
, utilisez simplementget(attr_name)
sur votre objet tag que vous utilisezfind_all
:contre un fichier XML
conf//test1.xml
qui ressemble à:imprime:
la source
Si vous souhaitez récupérer plusieurs valeurs d'attributs à partir de la source ci-dessus, vous pouvez utiliser
findAll
et une liste de compréhension pour obtenir tout ce dont vous avez besoin:la source
Je vous suggère en fait un moyen de gagner du temps en supposant que vous savez quel type de balises possède ces attributs.
supposons qu'une balise xyz ait cette attritube nommée "staininfo" ..
Et je ne veux pas que vous compreniez que full_tag est une liste
Ainsi, vous pouvez obtenir toutes les valeurs attrb de staininfo pour toutes les balises xyz
la source
vous pouvez également utiliser ceci:
la source
J'utilise ceci avec Beautifulsoup 4.8.1 pour obtenir la valeur de tous les attributs de classe de certains éléments:
Il est important de noter que la clé d'attribut récupère une liste même lorsque l'attribut n'a qu'une seule valeur.
la source