难以按人口统计(使用 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 评级的主要内容,如果未能解决你的问题,请参考以下文章