如何使用scrapy和beautifulsoup从imdb中提取预算,总量,元数据?

时间:2015-09-23 20:46:08

标签: python beautifulsoup scrapy imdb

我正盯着下面的网址:

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

HTML文件的结构似乎令人困惑:

”             Metascore:“

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

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

1 个答案:

答案 0 :(得分:2)

我会对此进行一次尝试,因为这听起来像是你不熟悉的一样。你真正想要做的事情就是从IMDB上的每个250个电影页面中获取预算,总量和元星。通过提及Scrapy,您已走上正轨,因为您必须从您提供的初始网址抓取到这些网页。 Scrapy有一些excellent documentation,所以如果你想使用它,我强烈建议你先从那里开始。

然而,如果您只需要刮掉这250页,那么您最好只使用Beautiful Soup来完成整个工作。只需做一个soup.findAll("td", {"class":"titleColumn"}),提取链接,然后做一个循环,你有一个美丽的汤一次打开每个页面。如果你不确定如何做到这一点,BS又有excellent documentation

从那里开始,只需要在每次迭代中抓取您想要的相关数据。例如,每部电影的元记录位于班级<div>的{​​{1}}内。为此做star-box-details,然后你必须做一些正则表达式来提取你想要的确切部分(regular-expressions.info有一个关于正则表达式的精彩教程,如果你真的进入正则表达式,你和& #39; ll可能最终会在RexEgg)下沉。

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

祝你好运!