2014-09-01 129 views
0

我正在经历一个老的哈佛CS 109课程,无法从数据库中250个票数最多的电影中获得收视率。我认为我的问题是有两个td.ratingColumn s,一个是评分,另一个是 - 之后 - 要你评价这部电影。第二个td.ratingColumn不包含</strong>。这会给我我的错误吗?如何调整代码以获得所有评级? 9.2是1/250。谢谢。在python下抓取IMDb的网页

dom = web.Element(r.text) 

for movie in dom.by_tag('td.ratingColumn'): 
    rating = runtime.by_tag('strong')[0].content 
    print rating 

9.2 
--------------------------------------------------------------------------- 
IndexError        Traceback (most recent call last) 
<ipython-input-9-ca9164c76716> in <module>() 
     2 
     3 for movie in dom.by_tag('td.ratingColumn'): 
----> 4  rating = movie.by_tag('strong')[0].content 
     5  print rating 

IndexError: list index out of range 

回答

0

正如你所指出的那样,由于第二元素不包含标签,则返回一个空数组试图访问第一个元素时引发IndexError例外。

这应该工作:

if movie.by_tag('strong'): 
    # do stuff 

让我知道如果我错过了一些东西。