Sto provando a imparare da solo il web scraping usando Python come parte di uno sforzo per imparare l'analisi dei dati. Sto cercando di raschiare la pagina web imdb il cui url è il seguente: http://www.imdb.com/search/title?sort=num_votes,desc&start=1&title_type=feature&year=1950,2012
Sto usando il modulo BeautifulSoup. Di seguito è riportato il codice che sto 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
Ricevo i seguenti output:
The Shawshank Redemption [u'Crime', u'Drama'] 142 mins. (1994)
Usando questo codice, sono riuscito a racimolare titolo, genere, tempo di esecuzione e anno, ma non sono riuscito a racimolare l'id del film imdb, né la valutazione. Dopo aver ispezionato gli elementi (nel browser Chrome), non riesco a trovare uno schema che mi permetta di usare un codice simile a quello sopra.
Qualcuno può aiutarmi a scrivere il pezzo di codice che mi permetterà di raschiare l'id del film e le classifiche?
rating
non è definito. Se lo risolvi, puoi anche aggiungerefrom BeautifulSoup import BeautifulSoup
, eimport requests
. E perché non mostrare ancheurl="http://etc"
così non dobbiamo farlo da soli?