我正在尝试自己使用Python学习网络抓取,作为学习数据分析的一部分。我正在尝试抓取网址为以下内容的imdb网页:http : //www.imdb.com/search/title? sort=num_votes,desc&start=1&title_type=feature&year=1950,2012
我正在使用BeautifulSoup模块。以下是我正在使用的代码:
r = requests.get(url) # where url is the above url
bs = BeautifulSoup(r.text)
for movie in bs.findAll('td','title'):
title = movie.find('a').contents[0]
genres = movie.find('span','genre').findAll('a')
genres = [g.contents[0] for g in genres]
runtime = movie.find('span','runtime').contents[0]
year = movie.find('span','year_type').contents[0]
print title, genres,runtime, rating, year
我得到以下输出:
The Shawshank Redemption [u'Crime', u'Drama'] 142 mins. (1994)
使用此代码,我可以刮取标题,流派,运行时间和年份,但不能刮除imdb电影ID或评级。在检查了元素之后(在chrome浏览器中),我无法找到一种模式,该模式将允许我使用上述类似的代码。
有人可以帮我写一段让我抓拍电影ID和等级的代码吗?
rating
未定义而失败。如果您解决了该问题,也可以添加from BeautifulSoup import BeautifulSoup
和import requests
。而且为什么不同时展示,url="http://etc"
让我们不必自己做呢?