Ich versuche, Web Scraping mit Python selbst zu lernen, um die Datenanalyse zu erlernen. Ich versuche, die imdb-Webseite zu durchsuchen, deren URL wie folgt lautet: http://www.imdb.com/search/title?sort=num_votes,desc&start=1&title_type=feature&year=1950,2012
Ich benutze das BeautifulSoup-Modul. Es folgt der Code, den ich verwende:
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
Ich erhalte die folgenden Ausgaben:
The Shawshank Redemption [u'Crime', u'Drama'] 142 mins. (1994)
Mit diesem Code konnte ich Titel, Genre, Laufzeit und Jahr kratzen, aber weder die ID des imdb-Films noch die Bewertung. Nach der Überprüfung der Elemente (im Chrome-Browser) kann ich kein Muster finden, mit dem ich ähnlichen Code wie oben verwenden kann.
Kann mir jemand helfen, den Code zu schreiben, mit dem ich die Film-ID und die Bewertungen abkratzen kann?
rating
nicht definiert ist. Wenn Sie das beheben, können Sie auch hinzufügenfrom BeautifulSoup import BeautifulSoup
, undimport requests
. Und warum nicht auch zeigen,url="http://etc"
damit wir das nicht für uns selbst tun müssen?