难以按人口统计(使用 IMDbpy)提取 IMDb 评级

Posted

技术标签:

【中文标题】难以按人口统计(使用 IMDbpy)提取 IMDb 评级【英文标题】:Difficulty extracting IMDb ratings by demographic (with IMDbpy) 【发布时间】:2018-04-26 17:33:36 【问题描述】:

我想按人口统计(性别、年龄组)收集 IMDb 评级详情。

当我尝试在 imdbpy 中使用 get_movie_vote_details 模块时,我的输出为空。 这是我的代码:

 import imdb

 i =  imdb.IMDb(accessSystem='http')

 movie = i.get_movie('0780504')

 print(movie)

 votes = i.get_movie_vote_details('0780504')

 print(votes)

这是输出:

print(m)

开车

print(votes)

'charactersRefs': , 'data': , 'namesRefs': , 'titlesRefs':

如您所见,“投票”输出有点偏离。有没有办法可以使用 imdbpy 提取评分详细信息?

【问题讨论】:

我重复了相同的代码,它看起来像库错误:“'AttributeError: 'DOMhtmlPlotParser' object has no attribute '_useModule' 在处理上述异常期间,发生了另一个异常:msg = msg % self.args TypeError: not enough arguments for format string Call stack: Message: '%s: unable to collect refs: %s' Arguments: ('DOMHTMLPlotParser',)' Drive", 奇怪地打印了标题而不是另一个数据 @oetoni :该错误已在存储库版本中修复。 【参考方案1】:

您不应该直接调用 .get_movie_XYZ(...) 方法:它们在内部使用 IMDb().update(... ) 方法。

例如:

import imdb

i = imdb.IMDb(accessSystem='http')

movie = i.get_movie('0780504')
i.update(movie, 'vote details')
print(movie.get('mean and median')

如果您想了解所有可用的信息集,请致电i.get_movie_infoset();要查看在更新给定信息集时添加了 Movie 实例的哪些键,请使用 movie.infoset2key 映射。

有关详细信息,请参阅official documentation。

关于数据的格式,这段代码:

from imdb import IMDb
ia = IMDb()
m = ia.get_movie('0780504', 'vote details')
print('median', m.get('median'))
print('arithmetic mean', m.get('arithmetic mean'))
print('number of votes', m.get('number of votes'))
print('demographics', m.get('demographics'))

将输出如下内容: median 8 arithmetic mean 7.8 number of votes 1: 8626, 2: 4135, 3: 5762, 4: 9264, 5: 17595, 6: 39440, 7: 84746, 8: 133331, 9: 98870, 10: 75737 demographics 'imdb staff': 'rating': 7.8, 'votes': 36, 'aged under 18': 'rating': 8.5, 'votes': 844, 'non us users': 'rating': 7.8, 'votes': 250586, 'top 1000 voters': 'rating': 7.6, 'votes': 739, 'males aged 45 plus': 'rating': 7.4, 'votes': 24213, 'aged 45 plus': 'rating': 7.4, 'votes': 28779, 'aged 18 29': 'rating': 7.9, 'votes': 183217, 'us users': 'rating': 8.0, 'votes': 71299, 'aged 30 44': 'rating': 7.7, 'votes': 181063, 'males aged under 18': 'rating': 8.5, 'votes': 705, 'males aged 30 44': 'rating': 7.8, 'votes': 152988, 'females aged under 18': 'rating': 7.9, 'votes': 133, 'males aged 18 29': 'rating': 8.0, 'votes': 148749, 'females aged 45 plus': 'rating': 7.4, 'votes': 4004, 'imdb users': 'rating': 7.8, 'votes': 477506, 'females aged 18 29': 'rating': 7.6, 'votes': 32575, 'females': 'rating': 7.6, 'votes': 65217, 'males': 'rating': 7.9, 'votes': 341617, 'females aged 30 44': 'rating': 7.5, 'votes': 25465

【讨论】:

谢谢@Davide。我现在更好地理解了语法,并用它来提取其他详细信息(预算、总额等)。当希望评级功能得到修复时,我会继续关注下一次更新。 @driskerr 现在应该修复解析器。如果可以,请测试一下(如果你觉得答案令人满意,请接受)。 hmm 这正是我正在寻找的,但不幸的是,当我重新安装 imdbpy 并完全按照编写的代码运行时,我得到以下输出:median None arithmetic mean None number of votes None demographics None @driskerr :你使用的是 Github 版本吗?我还没有打包/发布它(将在几周内完成:我想修复一些东西) 哈利华!现在可以了!我以为我已经重新安装了 Github 版本,但我想我在某个地方搞砸了。感谢您为我解决这个问题

以上是关于难以按人口统计(使用 IMDbpy)提取 IMDb 评级的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 IMDbPy 获得电影的缩略图?

如何使用 imdbpy 检索故事情节段落?

从 IMDbPy 结果中的电影目录中获取电影 ID

Imdb上所有电影名称、演员、导演、作家的列表

如何对字典按键值大小进行排序

SQL语句按年龄分组,统计各个年龄的人数