2010-04-15 8 views
4

Je cours pour obtenir de la valeur en tant que score. Je lance le 'score d'impression' pour obtenir ce qui suit.quelle est la valeur de retour de BeautifulSoup.find?

<div class=\"summarycount\">524</div> 

J'ai besoin d'extraire la partie numérique. J'ai utilisé re module mais j'ai échoué.

m = re.search("[^\d]+(\d+)", score) 
 
TypeError: expected string or buffer 

function search in re.py at line 142 
return _compile(pattern, flags).search(string) 
  • Quel est le type de retour de la fonction de recherche?
  • Comment obtenir le nombre à partir de la variable score?
  • Existe-t-il un moyen facile de laisser BeautifulSoup retourner la valeur (dans ce cas 524) elle-même?
+2

Désolé, ne peut pas résister ... La valeur de retour correcte devrait être "fromage cheddar" – Jay

Répondre

10

Il retourne un objet, que vous pouvez utiliser pour d'autres recherches ou pour extraire son contenu avec score.contents:

from BeautifulSoup import BeautifulSoup 

str = r''' 
    <body> 
    <div class="summarycount">524</div> 
    <div class="foo">111</div> 
    </body> 
''' 

soup = BeautifulSoup(str) 
score = soup.find('div', attrs={'class' : 'summarycount'}) 

print type(score) 
print score.contents 

Prints:

<class 'BeautifulSoup.Tag'> 
[u'524'] 

La documentation complète avec plusieurs exemples est available here .