2016-03-03 3 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() 

EDIT

объяснение:

с .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

Смежные вопросы