【问题标题】:Beautifulsoup get span contentBeautifulsoup 获取 span 内容
【发布时间】:2014-03-07 19:50:14
【问题描述】:

我已经解析了 html 页面:使用 beautifulsoup

user_page = urllib2.urlopen(user_url)
souping_page = bs(user_page)
badges = souping_page.body.find('div', attrs={'class': 'badges'})

在这之后我的badges 对象看起来像这样:

<span><span title="9 gold badges"><span class="badge1"></span><span class="badgecount">9</span></span><span title="38 silver badges"><span class="badge2"></span><span class="badgecount">38</span></span><span title="56 bronze badges"><span class="badge3"></span><span class="badgecount">56</span></span></span>

现在我想从中提取示例9 gold badges,38 silver badges,我尝试使用badges.span.span,但这不起作用。

【问题讨论】:

    标签: python html beautifulsoup html-parsing


    【解决方案1】:

    从badges 中获取父span,使用find_all() 和recursive=False 查找内部所有顶级跨度:

    from bs4 import BeautifulSoup
    
    
    page = """<div class="badges">
    <span>
        <span title="9 gold badges"><span class="badge1"></span><span class="badgecount">9</span></span>
        <span title="38 silver badges"><span class="badge2"></span><span class="badgecount">38</span></span>
        <span title="56 bronze badges"><span class="badge3"></span><span class="badgecount">56</span></span>
    </span>
    </div>"""
    
    soup = BeautifulSoup(page)
    badges = soup.body.find('div', attrs={'class': 'badges'})
    for span in badges.span.find_all('span', recursive=False):
        print span.attrs['title']
    

    打印:

    9 gold badges
    38 silver badges
    56 bronze badges
    

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-19
      • 2017-03-13
      • 2022-11-14
      • 2021-07-15
      • 1970-01-01
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多