Próbuję nauczyć się skrobania stron internetowych przy użyciu Pythona jako część wysiłku uczenia się analizy danych. Próbuję zeskrobać stronę internetową imdb, której adres URL jest następujący: http://www.imdb.com/search/title?sort=num_votes,desc&start=1&title_type=feature&year=19502012
Korzystam z modułu BeautifulSoup. Oto kod, którego używam:
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
Otrzymuję następujące wyniki:
The Shawshank Redemption [u'Crime', u'Drama'] 142 mins. (1994)
Za pomocą tego kodu mogłem zeskrobać tytuł, gatunek, środowisko uruchomieniowe i rok, ale nie mogłem zeskrobać identyfikatora filmu imdb ani oceny. Po sprawdzeniu elementów (w przeglądarce Chrome) nie jestem w stanie znaleźć wzoru, który pozwoli mi użyć podobnego kodu jak powyżej.
Czy ktoś może mi pomóc napisać fragment kodu, który pozwoli mi zeskrobać identyfikator filmu i oceny?
rating
nie został zdefiniowany. Jeśli to naprawisz, możesz również dodaćfrom BeautifulSoup import BeautifulSoup
iimport requests
. A dlaczego nie pokazaćurl="http://etc"
, żebyśmy nie musieli tego robić dla siebie?