2017-02-12 114 views
4

这是示例HTML代码:如何div元素使用beautifulsoup另一个div元素?

<div class="cb-col cb-col-25 cb-mtch-blk"><a class="cb-font-12" href="/live-cricket-scores/16947/ind-vs-ban-only-test-bangladesh-tour-of-india-2017" target="_self" title="India v Bangladesh - Only Test"> 
<div class="cb-hmscg-bat-txt cb-ovr-flo "> 
<div class="cb-ovr-flo cb-hmscg-tm-nm">BAN</div> 
<div class="cb-ovr-flo" style="display:inline-block; width:140px">322/6 (104.0 Ovs)</div> 
</div> 

我想提取文本等BAN6分之322(104.0 OVS)从上述解析的HTML。 Iam这样做 -

soup = BeautifulSoup(html) 
div_class = soup.findAll('div',class_='cb-col cb-col-25 cb-mtch-blk') 
for each in div_class: 
    #I want to get those texts from variable 'each' 

我该怎么办?

回答

3

您可以使用some css selectors与BeautifulSoup4:

>>> from bs4 import BeautifulSoup 
>>> html = ... # the html provided in the question 
>>> soup = BeautifulSoup(html, 'lxml') 
>>> name, size = soup.select('div.cb-hmscg-bat-txt.cb-ovr-flo div') 
>>> name.text 
u'BAN' 
>>> size.text 
u'322/6 (104.0 Ovs)' 
+1

无在线。 4,我得到一个错误,因为“太多的值解压缩”。我该怎么办? – ddlj

+0

@ddlj,如何取代第4行:'print([x.text for x in soup.select('div.cb -hmscg-bat-txt.cb-ovr-flo div')])' – falsetru

+0

@ddlj,顺便说一句,你能分享实际的HTML(或从你得到的HTML网址)?正如你在我的回答中看到的,我可以在问题中使用给定的html来获得这两个文本。 – falsetru

1

each意味着你提供的HTML代码,你应该去下div标签,并获得所有文本使用stripped_strings

div_class = soup.findAll('div',class_='cb-col cb-col-25 cb-mtch-blk') 
for each in div_class: 
    name, size = each.div.stripped_strings 
    print(name, size) 

出来:

BAN 322/6 (104.0 Ovs) 
相关问题