Je veux imprimer une valeur d'attribut en fonction de son nom, prenons par exemple
<META NAME="City" content="Austin">
Je veux faire quelque chose comme ça
soup = BeautifulSoup(f) //f is some HTML containing the above meta tag
for meta_tag in soup('meta'):
if meta_tag['name'] == 'City':
print meta_tag['content']
Le code ci-dessus donne un KeyError: 'name'
, je pense que c'est parce que le nom est utilisé par BeatifulSoup, donc il ne peut pas être utilisé comme argument de mot-clé.
python
beautifulsoup
Ruth
la source
la source
soup.findAll("meta", {"name":"City"})['content']
. Cela renverra toutes les occurrences.theharshest a répondu à la question mais voici une autre façon de faire la même chose. De plus, dans votre exemple, vous avez NAME en majuscules et dans votre code, vous avez le nom en minuscules.
la source
6 ans de retard à la fête, mais j'ai cherché comment extraire la valeur d'attribut de balise d' un élément html , donc pour:
Je veux "addressLocality". J'ai continué à être renvoyé ici, mais les réponses n'ont pas vraiment résolu mon problème.
Comment j'ai réussi à le faire finalement:
Comme il s'agit d'un dict, vous pouvez également utiliser
keys
et 'valeurs'Espérons que cela aide quelqu'un d'autre!
la source
Les travaux suivants:
la source
La réponse de theharshest est la meilleure solution, mais pour votre information, le problème que vous rencontrez est lié au fait qu'un objet Tag dans Beautiful Soup agit comme un dictionnaire Python. Si vous accédez à la balise ['name'] sur une balise qui n'a pas d'attribut 'name', vous obtiendrez une KeyError.
la source
On peut également essayer cette solution:
Pour trouver la valeur, qui est écrite dans l'étendue de la table
htmlContent
Code Python
la source
la source