Estou tentando aprender a raspagem da Web usando Python sozinho como parte de um esforço para aprender a análise de dados. Estou tentando raspar a página da Web do imdb cujo URL é o seguinte: http://www.imdb.com/search/title?sort=num_votes,desc&start=1&title_type=feature&year=1950,2012
Estou usando o módulo BeautifulSoup. A seguir está o código que estou usando:
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
Estou recebendo as seguintes saídas:
The Shawshank Redemption [u'Crime', u'Drama'] 142 mins. (1994)
Usando esse código, pude raspar o título, o gênero, o tempo de execução e o ano, mas não pude raspar o ID do filme imdb nem a classificação. Depois de inspecionar os elementos (no navegador chrome), não consigo encontrar um padrão que permita usar código semelhante ao descrito acima.
Alguém pode me ajudar a escrever o código que me permitirá raspar a identificação e as classificações do filme?
rating
não está definido. Se você corrigir isso, também poderá adicionarfrom BeautifulSoup import BeautifulSoup
, eimport requests
. E por que não mostrar tambémurl="http://etc"
para não precisarmos fazer isso por nós mesmos?