2008-11-09 77 views
6

使用IMDbPy這是痛苦容易從IMDB網站的訪問電影:如何使用IMDbPy獲得電影的縮略圖?

import imdb 

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

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

不過,我看不出有什麼辦法讓電影封面的圖片或縮略圖。建議?

回答

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拿到蓋網址。從IMDbPy郵件列表

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 
2

響應:

如果存在,URL訪問是通過 電影[ '蓋URL'。當心 它可能會丟失,所以你必須 的東西,如第一個測試:
如果「蓋網址」在電影: ...

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

以同樣的方式,一個人的爆頭 存儲在人[「爆頭」]。

事情需要注意的:

  • 蓋和爆頭僅可(通過「HTTP」或「移動」數據接入系統)獲取從Web服務器中的數據,而不是純文本數據文件('sql'或'local')。
  • 使用這些圖片,您必須尊重IMDb政策的條款;看到http://imdbpy.sourceforge.net/docs/DISCLAIMER.txt
  • 你會得到的圖像的大小會有所不同;如果需要,您可以使用python-imaging模塊重新縮放它們。
+1

電影中的'封面網址'對我來說即使在那裏也會返回false。 – Sam 2009-10-02 10:30:20

相關問題