2016-03-03 53 views
0

你好我使用beautifulsoup爲Python2.7和閱讀下列方式html文件中間:刮痧數據問題得到一個列表項蟒蛇

soup=BeautifulSoup(html,"html5lib") 
year= soup.find("i",{"class":"fa fa-calendar-o"}) 

我希望拿到年終2011從下面的HTML,我沒有得到的價值,我得到的是<i class="fa fa-calendar-o"></i>。有人能幫助我解釋我做錯了什麼嗎?謝謝。

</div> 
     <!-- /.section-title --> 
     <div class="available clearfix"> 
      <h5 class="pull-left"><!--Available from--> </h5> 
      <div class="pull-right"> <div class="feedback-rating" data-score="4"></div> </div> 
     </div> 
     <div class="section-body"> 
      <ul class="list-info"> 
       <li> <i class="fa fa-random"></i> Manual </li> 
       <li> <i class="fa fa-tint"></i> Petrol </li> 
       <li> <i class="fa fa-calendar-o"></i> 2011 </li> 
       <li> <i class="fa fa-map-marker"></i> Airport (YYZ) </li> 
      </ul> 
      <!-- /.list-info --> 
     </div> 

回答

2

的問題是,2011年是在<li> </li>沒有在<i></i>標籤,所以試試這個:

i = soup.find("i",{"class":"fa fa-calendar-o"}) 
    year = i.parent.getText() 

編輯

解釋:

.parent可以訪問父元素,在這種情況下.parent給你 <li> <i class="fa fa-calendar-o"></i> 2011 </li>,如果你這樣做.parent再次返回

<ul class="list-info"> 
       <li> <i class="fa fa-random"></i> Manual </li> 
       <li> <i class="fa fa-tint"></i> Petrol </li> 
       <li> <i class="fa fa-calendar-o"></i> 2011 </li> 
       <li> <i class="fa fa-map-marker"></i> Airport (YYZ) </li> 
      </ul> 

更多看到docs

+0

這完美的作品,那麼究竟是什麼被用做parent.getText()? – FancyDolphin

+0

@FancyDolphin請參閱編輯 – arcegk