我正盯着下面的网址:
HTML文件的结构似乎令人困惑:
” Metascore:“
我正在尝试使用这样的格式:
movie['metascore'] = self.get_text(soup.find('h4', attrs={' ':'Metascore'}))
答案 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链接。您可能需要的文件是.find
和business.list.gz
。至于每个电影页面上的元记录,该评级实际上来自Metacritic,因此您希望去那里获取该数据。