web-dev-qa-db-fra.com

belle soupe juste obtenir la valeur à l'intérieur de la balise

La commande suivante:

volume = soup.findAll("span", {"id": "volume"})[0]

donne:

<span class="gr_text1" id="volume">16,103.3</span>

lorsque j'émets une impression (volume).

Comment puis-je obtenir uniquement le numéro?

16
user1357015

Extrayez la chaîne de l'élément:

volume = soup.findAll("span", {"id": "volume"})[0].string
23
isedev

Utilisation de sélecteur css :

>>> soup.select('span#volume')[0].text
u'16,103.3'
9
falsetru
2
cinv3

Juste pour ajouter, j'ai également trouvé que .string Ne fonctionnait pas bien quand il y avait <br> Dans le texte.

PAR EXEMPLE:

 <div class = "Lines">
    <span> First Line <br> Second Line <br> Third Line </span>
  </div>

Si nous faisons une soup.find("div",attrs={"class":"Lines}).span.string nous obtenons une None

Mais une soup.find("div",attrs={"class":"Lines}).span.text on obtient

First Line
Second Line
Third Line

Je pense que .string Donne un objet NavigatableString et .text Donne un objet unicode.

0
Sanjay