2008-09-19 86 views
21

有沒有人做過這個?在我看來,應該有一個web服務,但我找不到一個。我正在編寫一個個人使用的應用程序,它只顯示來自IMDB的基本信息。連接到IMDB

回答

14

沒有可用的webservice。

但是,每種語言都有足夠的html刮板來滿足您的需求!

我在一些個人項目中使用了.NET 3.5 Imdb Services opensource project

1分鐘谷歌的結果:

+0

謝謝我正在尋找這個簡化我在大學的項目工作:) – nXqd 2010-12-18 09:49:00

8

唯一的 「API」 的IMDB發佈是含有一組plain-text data files格式化的演員,導演,電影等列表。除非有人發佈,否則您可能需要編寫自己的解析器e爲您的語言。嘗試Google搜索,如「imdb api」和「imdb parser」。

屏幕刮板可能很有用,但它們在使用條款中特別是prohibit scrapers

+0

你完全正確的事實,它是禁止使用刮板,但因爲它僅供個人使用,我不會讓這個「節目塞子」。 – 2008-09-19 07:50:43

4

IMDB禁止刮板,並且每隔一段時間更改頁面佈局,因此解析HTML是一種選擇,但要準備好每年調整2-3次代碼(在那裏完成,放棄)。他們確實有收費服務,可以充分利用這些數據,但是你還需要解釋它的用途,並說服他們你沒有建立一個有競爭力的網站(我有一個鏈接,但似乎已經改變,現在找不到它)。

+0

嗨,我不明白爲什麼imdb不允許webscraping,但他們確實讓你完全訪問他們的完整數據?你知道原因嗎?它只是沒有意義,因爲網絡抓取只是從他們已經提供的網站獲取數據? – hlim 2012-10-30 07:04:54

5

下面是使用正則表達式自己的解決方案:

private const string UglyMovieRegex = "(?<=5>|3>)(Cast|Director:|Fun\\sStuff|Genre:|Plot:|Runtime:|Tagline:|Writers:)" 
               + "|href=\"[\\w\\d/]+?(Genres|name|character)/([\\w]+?)/\".*?>([.\\-\\s\\w]+)</a>" 
               + "|(?<=h\\d>)([.\\w\\s'\\-\"]+)(?=<a\\sc|</d|\\|)"; 

Regex MovieData = new Regex (UglyMovieRegex, RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); 
1

TRYNT重工科技公司提供(免費)檢索基本IMDB數據的Web服務 - 在http://www.trynt.com/trynt-movie-imdb-api/看看他們的網站。他們還爲電視數據提供單獨的服務。

+0

是否已經死了?現在已經停了幾天了。 – 2010-01-25 16:20:03

2

另一種替代方法是在本地機器上運行IMDB數據庫。 Java Movie Database導入IMDB數據庫文件,將其轉換並提供IMDB的本地可訪問副本。 IMDB具有Java Movie Database所沒有的一些功能,反之亦然,但如果您要查找的是快速訪問所有數據,可能值得嘗試一下。

17

目前IMDb的庫看起來相當不可靠,效率非常低。我真的希望IMDb只會創建一個web服務。

經過一番搜索,我找到了一個合理的替代IMDb。它提供了所有的基本信息,如概述,年份,評級,海報,拖車等。:

The Movie Database (TMDb)

它提供了一個web服務與wrappers for several languages,似乎迄今爲止可靠。搜索結果本身也更精確。

5

雖然這被張貼兩年多前,這裏是一個簡單的Python代碼

import urllib2 

movie_id = raw_input('Enter the ID of the movie: ') 
json = urllib2.urlopen('http://imdbapi.com/?i=' + movie_id + '&r=json') 

print json.read() 

另存爲imdb.py,然後在外殼或終端或任何

,如果你想的XML數據運行只需更換JSON和XML

請注意,這是使用imdbapi.com網站返回JSON結果訪問該網站,以查看更多選項。