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

8 投票
2 回答
10319 浏览
提问于 2025-04-11 19:16

使用 IMDbPy 这个工具,从IMDB网站获取电影信息非常简单:

import imdb

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

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

不过,我找不到获取电影封面图片或缩略图的方法。有没有什么建议?

2 个回答

2

来自IMDbPy邮件列表的回复:

如果有的话,网址可以通过movie['cover url']来访问。要注意,这个网址可能会缺失,所以你得先检查一下,比如用下面的代码:
if 'cover url' in movie: ...

之后,你可以使用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).

同样,一个人的头像可以通过person['headshot']来获取。

需要注意的事项:

  • 封面和头像只能通过从网络服务器获取数据(通过'http'或'mobile'数据访问系统),而不能从普通的文本数据文件('sql'或'local')中获取。
  • 使用这些图片时,你必须遵守IMDb的政策条款;详细信息请查看 http://imdbpy.sourceforge.net/docs/DISCLAIMER.txt
  • 你获取的图片大小可能会有所不同;如果需要,你可以使用python-imaging模块来调整它们的大小。
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

撰写回答