2017-02-12 1 views
4

이 샘플 HTML 코드입니다 :beautifulsoup를 사용하여 다른 div 요소의 요소를 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에서 같은 텍스트를 추출 할. 이런 식으로 -

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

당신은 BeautifulSoup4와 some css selectors를 사용할 수 있습니다

>>> 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 ([div.cb-hmscg-bat-txt.cb-ovr-flo div ')]의'print' [x.text])' – falsetru

+0

@ddlj, BTW, 당신은 실제 HTML (또는 당신이 HTML을 가지고있는 곳의 URL)을 공유 할 수 있습니까? 당신이 내 대답에서 볼 수 있듯이, 질문에서 주어진 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) 
관련 문제