有没有办法使用 IMDbPY 提取 IMDb 评论?

Is there a way to extract IMDb reviews using IMDbPY?

我不需要 Kaggle 中提供的数据集。我想使用 IMDbPY 或任何其他抓取方法从 IMDb 中提取电影评论。

https://imdbpy.github.io/

虽然从imdbpy docs看不明显。您始终可以通过检查变量的键来检查变量的属性。当您使用 imdbpy 抓取电影时,并非所有您要查找的信息都不会立即可用。在您的情况下,您想获得评论。所以你必须添加它们。我们可以在信息集中看到,存在三种不同类型的评论; 'reviews'、'external reviews' 和 'critic reviews'。与这些关联的键尚未添加。下面的例子展示了它是如何完成的。

from imdb import IMDb

# create an instance of the IMDb class
ia = IMDb()

the_matrix = ia.get_movie('0133093')
print(sorted(the_matrix.keys()))

# show all information sets that can be fetched for a movie
print(ia.get_movie_infoset()) #Information we can add. Keys will be added
ia.update(the_matrix, ['external reviews'])
ia.update(the_matrix, ['reviews'])
ia.update(the_matrix, ['critic reviews'])
# show which keys were added by the information set
print(the_matrix.infoset2keys['external reviews']) #no external reviews, so no key is added
print(the_matrix.infoset2keys['reviews']) # A lot of reviews. Adds key: 'reviews'
print(the_matrix.infoset2keys['critic reviews']) #Adds the keys: 'metascore', and 'metacritic url'
# print(the_matrix['reviews'])
print(sorted(the_matrix.keys())) #Check out the new keys that we have added

是的,您可以使用 IMDbPY 提取评论。 Colab Notebook.

# to install the imdbpy library, just including it for noob-friendliness     
pip install imdbpy

关于 IMDbPY,您必须了解以下内容,它使用方法 get_movie、get_person 和 object 从 IMDB 检索电影、个人和公司等各种数据get_company分别。然而,问题是有很多信息需要检索,检索所有信息可能不是最好的解决方案(因为这会耗费时间和带宽)。因此,数据被分组为称为“信息集”的小部分信息。

检索电影的代码 "The Matrix (1999)"。
(注意:“0133093”是没有 'tt' 的 IMDb 标题 ID,示例:https://www.imdb.com/title/tt0133093/

from imdb import IMDb
ia = IMDb()
theMatrix = ia.get_movie('0133093')

默认情况下,电影object有以下信息集'main'、'plot'、'synopsis',您可以使用查看。current_info。从这里我们可以看出,默认情况下电影 object 不会检索 "reviews" 信息集。

theMatrix.current_info

#output:
['main', 'plot', 'synopsis']

如果您知道要检索哪些信息集,我们可以将可选参数 "info=" 传递给 get_movie 方法。在这种情况下 'reviews'.

theMatrix = ia.get_movie('0133093',['reviews'])
theMatrix.current_info

#output:
['reviews']

theMatrix['reviews']

#output:
[{'author': 'ur0540275',
  'content': "The story of a reluctant Christ-like protagonist...",
  'date': '19 September 2000',
  'helpful': 0,
  'not_helpful': 0,
  'rating': 1,
  'title': ''},
 {'author': 'ur15794099',
  'content': '** May contain spoilers **There aren\'t many movies...',
  'date': '26 July 2014',
...
...

如果您已经检索到电影 object 并且想要包含更多信息集而不必再次检索整部电影 object,那么 更新 方法可以提供帮助。

theMatrix = ia.get_movie('0133093')
theMatrix.current_info

#output
['main', 'plot', 'synopsis']

ia.update(theMatrix,['reviews'])
theMatrix.current_info

#output
['main', 'plot', 'synopsis', 'reviews']

上面详述的两种方法不仅可以帮助您获得 "reviews",还可以帮助您获得您想要检索的任何其他信息集。但是,您需要知道每个 object(电影、个人或公司)支持的可用信息集是什么。为此,您可以分别使用 ia.get_movie_infoset、ia.get_person_infoset 或 ia.get_company_infoset 方法。

sorted(ia.get_movie_infoset())

#output:
['airing',
 'akas',
 'alternate versions',
 'awards',
 'connections',
 'crazy credits',
 'critic reviews',
 'episodes',
 'external reviews',
 ...
 ...
 'release dates',
 'release info',
 'reviews',
 'sound clips',
 'soundtrack',
 'synopsis',
 'taglines',
 'technical',
 'trivia',
 'tv schedule',
 'video clips',
 'vote details']

有了所有这些理论,可以更好地学习和理解 imdbpy。这是获取电影评论的one-liner:)

ia.get_movie_reviews('0133093')

#output:
[{'author': 'ur0540275',
  'content': "The story of a reluctant Christ-like protagonist...",
  'date': '19 September 2000',
  'helpful': 0,
  'not_helpful': 0,
  'rating': 1,
  'title': ''},
 {'author': 'ur15794099',
  'content': '** May contain spoilers **There aren\'t many movies...',
  'date': '26 July 2014',
...
...