2010-04-15 60 views
4

我運行得分作爲分數。BeautifulSoup.find的回報值是多少?

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

我運行'打印得分'得到如下。

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

我需要提取數字部分。我用re模塊但失敗了。

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) 
  • 有什麼發現函數的返回類型?
  • 如何從得分變量中獲取數字?
  • 有什麼簡單的方法讓BeautifulSoup返回值(在本例中爲524)本身?
+2

對不起,不能拒絕......正確的返回值應該是「切達芝士」 – Jay 2010-04-15 17:11:27

回答

10

它返回一個對象,其可用於進一步的搜索或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 

打印:

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

與多個實施例的完整文檔是available here