BeautifulSoup.find的返回值是什么?

7
我跑步以获取一些数值作为分数。
score = soup.find('div', attrs={'class' : 'summarycount'})

我运行'print score',得到以下结果。
<div class=\"summarycount\">524</div>

我需要提取其中的数字部分。我使用了re模块但失败了。

m = re.search("[^\d]+(\d+)", score)
类型错误: 期望字符串或缓冲区
在re.py的第142行中的search函数 返回_compile(pattern, flags).search(string)
  • find函数的返回类型是什么?
  • 如何从score变量中获取数字?
  • 有没有简单的方法让BeautifulSoup返回值本身(在这种情况下为524)?

5
抱歉,我忍不住了... 正确的返回值应该是 "切达奶酪"。 - Jay
1个回答

13

它返回一个对象,你可以用它进行进一步的搜索或使用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']

完整的文档和多个示例可以在这里获得。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接