如何使用IMDbPy获取电影的缩略图?

时间:2008-11-09 06:39:53

标签: python imdb imdbpy

使用IMDbPy从IMDB网站访问电影非常容易:

import imdb

access = imdb.IMDb()
movie = access.get_movie(3242) # random ID

print "title: %s year: %s" % (movie['title'], movie['year'])

然而,我认为无法获得电影封面的图片或缩略图。建议?

2 个答案:

答案 0 :(得分:10)

注意:

  • 并非每部电影都有封面网址。 (示例中的随机ID不会。)
  • 确保您使用的是最新版本的IMDbPy。 (IMDb改变了,IMDbPy用它。)

...

import imdb

access = imdb.IMDb()
movie = access.get_movie(1132626)

print "title: %s year: %s" % (movie['title'], movie['year'])
print "Cover url: %s" % movie['cover url']

如果由于某种原因你无法使用上述内容,你可以随时使用BeautifulSoup之类的东西来获取封面网址。

from BeautifulSoup import BeautifulSoup
import imdb

access = imdb.IMDb()
movie = access.get_movie(1132626)

page = urllib2.urlopen(access.get_imdbURL(movie))
soup = BeautifulSoup(page)
cover_div = soup.find(attrs={"class" : "photo"})
cover_url = (photo_div.find('img'))['src']
print "Cover url: %s" % cover_url

答案 1 :(得分:2)

来自IMDbPy邮件列表的回复:

  

如果存在,则可以访问该网址   通过电影['封面网址']​​。谨防   它可能会丢失,所以你必须   首先用以下方法测试:
  如果在电影中'封面网址':          ...

     

之后,您可以使用urllib   模块来获取图像本身。

     

提供一个完整的例子,   类似的东西应该这样做   特技:

import urllib
from imdb import IMDb

ia = IMDb(#yourParameters)
movie = ia.get_movie(#theMovieID)

if 'cover url' in movie:
    urlObj = urllib.urlopen(movie['cover url'])
    imageData = urlObj.read()
    urlObj.close()
    # now you can save imageData in a file (open it in binary mode).
     

以同样的方式,一个人的爆头   存储在人['headshot']中。

     

需要注意的事项:

     
      
  • 封面和爆头只能从网络服务器(通过'http'或'移动'数据访问系统)获取数据,而不能在纯文本数据文件('sql'或'local')中获取。 / LI>   
  • 使用图像,您必须遵守IMDb政策的条款;见http://imdbpy.sourceforge.net/docs/DISCLAIMER.txt
  •   
  • 你会得到的图像大小不一;如果需要,你可以使用python-imaging模块重新缩放它们。
  •