【问题标题】:How to extract budget, gross, metascore from imdb using scrapy and beautifulsoup?如何使用scrapy和beautifulsoup从imdb中提取预算、总额、元分数?
【发布时间】:2015-12-21 08:05:44
【问题描述】:

我盯着下面的网址:

http://www.imdb.com/chart/top

HTML 文件的结构看起来好混乱:

" 元分数:“

我正在尝试使用这样的格式:

movie['metascore'] = self.get_text(soup.find('h4', attrs={'&nbsp':'Metascore'}))

【问题讨论】:

  • 您需要提供更多详细信息。
  • 如其所写,您的问题无法回答。如果没有更多细节,我们无法知道如何提取任何东西。
  • 对不起,我编辑了帖子
  • 这样好一点。你的预期结果是什么?你的实际结果是什么?您的实际结果与您的预期有何不同?你有错误吗?如果是,那是什么?如果引发异常,请包含整个回溯。

标签: python beautifulsoup scrapy imdb


【解决方案1】:

我会试一试,因为听起来你是新手。听起来您实际上想要做的是从 IMDB 上的 250 个电影页面中的每个页面获取预算、总评分和元分数。通过提及 Scrapy,您走在了正确的轨道上,因为您必须从您提供的初始 URL 爬到这些页面。 Scrapy 有一些excellent documentation,所以如果你想使用它,我强烈建议你先从那里开始。

但是,如果您只需要抓取这 250 页,那么最好只使用 Beautiful Soup 来完成整个工作。只需执行soup.findAll("td", {"class":"titleColumn"}),提取链接,然后执行一个循环,让Beautiful Soup 一次打开每个页面。如果你不知道怎么做,BS 有excellent documentation

从那里开始,只需在每次迭代期间抓取所需的相关数据即可。例如,每部电影的元分数在 star-box-details 类的 <div> 内。为此做一个.find,然后你必须做一些正则表达式来提取你想要的确切部分(regular-expressions.info 有一个关于正则表达式的很棒的教程,如果你真的进入正则表达式,你可能最终会下沉小时到RexEgg)。

我不打算对整个事情进行编码,因为您会通过尝试解决问题所带来的反复试验学到很多东西,但希望这能让您走上正轨。但是,请注意IMDB forbids scraping,但对于小型项目,我敢肯定没有人会关心。但是,如果您想认真一点,"Does IMDB provide an API?" 帖子有一些很好的资源,可以帮助您通过各种第三方 API(有些甚至直接来自 IMDB)来做到这一点。在您的情况下,最好的方法可能是简单地download the data as text files directly from IMDB。单击任何 FTP 链接。您可能需要的文件是business.list.gzratings.list.gz。至于每个电影页面上的元评分,该评分实际上来自Metacritic,因此您需要去那里提取该数据。

祝你好运!

【讨论】:

    猜你喜欢
    • 2016-02-16
    • 2016-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 2015-05-08
    • 1970-01-01
    相关资源
    最近更新 更多