Получение 10000 сюжетов фильмов с IMDbPY - PullRequest
0 голосов
/ 28 февраля 2019

Я использую IMDbPY в сочетании с общедоступными наборами данных IMDb (https://www.imdb.com/interfaces/) для создания настраиваемого набора данных с pandas. Публичные наборы данных содержат много полезной информации, но не содержат информацию о графикенасколько я вижу. IMDbPY содержит резюме сюжетов, в дополнение к синопсисам и ключевым словам для сюжетов в виде сюжета, синопсиса и ключей ключевых слов класса / словаря фильма.

Я могу получитьграфик для отдельных ключей с помощью вызова API: ia.get_movie(movie_index[2:])['plot'][0], где я использую [2:], потому что первые 2 символа индекса - это «tt» в общедоступном наборе данных, и [0], потому что есть много резюме графиков, поэтому яберя первый из IMDbPY.

Однако, чтобы получить 10 000 сводок по графику, мне нужно было бы сделать 10000 вызовов API, что заняло бы у меня 7,5 часов, при условии, что каждый вызов API занимает 2,7 секунды (что я и нашел, используяtqdm). Таким образом, решение этой проблемы состоит в том, чтобы позволить ему работать в одночасье. Есть ли другие решения? Кроме того, есть ли лучший способ сделать это, чем мой курсКак создать словарь с ключами в качестве индекса фильма (например, tt0111161 для «Погашения Шоушенка») и значениями в виде графиков, а затем преобразовать этот словарь в кадр данных?Любое понимание приветствуется.Мой код ниже:

movie_dict = {}
for movie_index in tqdm(movies_index[0:10]):
    #movie = ia.get_movie(movie_index[2:])
    try:
        movie_dict[movie_index] = ia.get_movie(movie_index[2:])['plot'][0]
    except:
        movie_dict[movie_index] = ''

plots = pd.DataFrame.from_dict(movie_dict, orient='index')
plots.rename(columns={0:'plot'}, inplace=True)
plots


             plot
tt0111161   Two imprisoned men bond over a number of years...
tt0468569   When the menace known as the Joker emerges fro...
tt1375666   A thief who steals corporate secrets through t...
tt0137523   An insomniac office worker and a devil-may-car...
tt0110912   The lives of two mob hitmen, a boxer, a gangst...
tt0109830   The presidencies of Kennedy and Johnson, the e...
tt0120737   A meek Hobbit from the Shire and eight compani...
tt0133093   A computer hacker learns from mysterious rebel...
tt0167260   Gandalf and Aragorn lead the World of Men agai...
tt0068646   The aging patriarch of an organized crime dyna...

1 Ответ

0 голосов
/ 01 марта 2019

Прежде всего, учтите, что выполнение такого большого количества запросов за столь короткое время может рассматриваться как ограничение их условий обслуживания: https://www.imdb.com/conditions

Однако, 10.000 запросов к крупному веб-сайту - это не так уж много, чтобы создатьлюбая реальная проблема, особенно если вы ждете несколько секунд между каждым вызовом только для того, чтобы стать лучше (это займет больше времени, но в вашем случае это не должно иметь большого значения - но, опять же, смотрите выше в отношении лицензии, которую вы должны уважать).

Я могу предложить два разных варианта:

  1. использовать старый набор данных, который можно бесплатно использовать для личного и некоммерческого использования, а IMDbPY способен анализировать;недостаток в том, что данные немного устарели (конец 2017 года): https://imdbpy.readthedocs.io/en/latest/usage/ptdf.html
  2. использует альтернативный источник, такой как https://www.omdbapi.com/ или https://www.themoviedb.org/, который должен иметь публичные API ибольше разрешительных лицензий.

Отказ от ответственности: я один из главных авторов IMDbPY

...