データ分析の学習の一環として、Pythonを使用してWebスクレイピングを自分で学習しようとしています。次のURLのimdb Webページをスクレイピングしようとしています: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"
私たち自身でそれを行う必要がないように表示しないのですか?