7

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

import imdb

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

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

但是,我看不出有办法获得电影封面的图片或缩略图。建议?

4

2 回答 2

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 之类的东西来获取封面 url。

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
于 2008-11-09T09:34:46.613 回答
2

IMDbPy 邮件列表的回复:

如果存在,则可以通过电影 ['cover url'] 访问该 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”或“移动”数据访问系统),而不是纯文本数据文件(“sql”或“本地”)。
  • 使用图像时,您必须遵守 IMDb 政策的条款;见http://imdbpy.sourceforge.net/docs/DISCLAIMER.txt
  • 您将获得的图像大小会有所不同;如果需要,您可以使用 python-imaging 模块重新缩放它们。
于 2008-11-09T11:01:02.867 回答