刮取数据问题获取列表项python

时间:2016-03-03 02:03:05

标签: html python-2.7 web-scraping beautifulsoup

您好我在Python2.7中使用beautifulsoup,并在以下列方式阅读html文件:

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

我希望从以下的html中获得2011年的成绩,而我得到的所有价值都不是<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>

1 个答案:

答案 0 :(得分: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