Кто-нибудь делал это раньше? Мне казалось, что должен быть веб-сервис, но я не могу его найти. Я пишу приложение для личного пользования, которое просто показывало бы основную информацию из IMDB.
Подключение к ИМДБ
Ответы (10)
Нет доступного веб-сервиса.
Но существует достаточно парсеров html, написанных на каждом языке, чтобы удовлетворить ваши потребности!
Я использовал проект .NET 3.5 Imdb Services с открытым исходным кодом в нескольких личных проектах.
Результаты Google за 1 минуту:
- Perl: IMDB-Film
- Руби: libimdb-ruby
- Python: IMDbPY
Библиотеки для IMDb в настоящее время кажутся весьма ненадежными и крайне неэффективными. Я бы очень хотел, чтобы IMDb просто создал веб-сервис.
Немного поискав, я нашел разумную альтернативу IMDb. Он предоставляет всю основную информацию, такую как обзор, год, рейтинги, постеры, трейлеры и т. д.:
Он предоставляет веб-сервис с обертками для нескольких языков и пока кажется надежным. Результаты поиска для меня также были более точными.
Единственный «API», который публикует IMDb, — это набор текстовых файлов данных, содержащих отформатированные списки действующих лиц. , режиссеры, фильмы и т. д. Вам, скорее всего, придется написать свой собственный синтаксический анализатор, если только кто-то не выпустил его для вашего языка. Попробуйте выполнить поиск в Google, например «imdb api» и «imdb parser».
Скрапер экрана может быть полезен, но они специально запрещают скребки в своих условиях использования.
Хотя это было опубликовано более двух лет назад, вот простой код 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, посетите этот веб-сайт, чтобы просмотреть дополнительные параметры.
Вот мое собственное решение с использованием RegEx:
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 );
IMDB запрещает скрейперы и время от времени меняет макет страницы, поэтому синтаксический анализ HTML является вариантом, но будьте готовы корректировать свой код 2-3 раза в год (был там, сделал это, отказался). У них есть платная услуга, предоставляющая полный доступ к данным, но вам также нужно будет объяснить, для чего она нужна, и убедить их, что вы не создаете конкурентоспособный веб-сайт (у меня была ссылка на это, но, похоже, изменился и не могу найти его сейчас).
Другой альтернативой является запуск базы данных IMDB на вашем локальном компьютере. Java Movie Database импортирует файлы базы данных IMDB, преобразует их и предоставляет локально доступную копию IMDB. IMDB имеет некоторые функции, которых нет в Java Movie Database, и наоборот, но если вам нужен быстрый доступ ко всем данным, возможно, стоит попробовать.
Теперь есть (недокументированный) API, такой как http://www.imdb.com/xml/find?json=1&q=Harry+Potter
. См. Предоставляет ли IMDB API?
TRYNT Heavy Technologies предоставляет (бесплатно) веб-сервис для получения основных данных IMDb — посетите их сайт по адресу http://www.trynt.com/trynt-movie-imdb-api/. У них также есть отдельная услуга для телевизионных данных.
Существует как минимум один неофициальный API IMDb под названием IMDb8. Он имеет около 31 конечной точки, включая
- актеры/список-рожденных-сегодня
- актеры / получить-награды-резюме
- название / получить-сюжеты
- титул / получить высшую команду
и т. д. Как и любой другой API, его очень просто использовать. Я использовал этот API для создания забавного проекта викторины. Учебник о том, как начать работу, можно найти здесь.