2008-09-19 85 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结果访问该网站,以查看更多选项。