代码之家  ›  专栏  ›  技术社区  ›  prosseek

beautifulsoup.find的返回值是多少?

  •  4
  • prosseek  · 技术社区  · 14 年前

    我跑步是为了得到一些分数。

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

    我运行“打印分数”得到如下结果。

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

    我需要提取数字部分。我使用了重新模块,但失败了。

    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)
    
    • find函数的返回类型是什么?
    • 如何从score变量中获取数字?
    • 有什么简单的方法让beautifulsoup返回值(在本例中是524)本身吗?
    1 回复  |  直到 14 年前
        1
  •  10
  •   Eli Bendersky    14 年前

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