2010-04-15 52 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