2016-03-03 57 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