Beautifulsoup获得跨度内容

add*_*ons 3 html python beautifulsoup html-parsing

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

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

在此之后我的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>
Run Code Online (Sandbox Code Playgroud)

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

ale*_*cxe 10

获取父spanbadges,查找所有顶级利用内跨越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']
Run Code Online (Sandbox Code Playgroud)

打印:

9 gold badges
38 silver badges
56 bronze badges
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.