Estoy tratando de aprender el raspado web usando Python por mí mismo como parte de un esfuerzo por aprender el análisis de datos. Estoy tratando de raspar la página web de imdb cuya url es la siguiente: http://www.imdb.com/search/title?sort=num_votes,desc&start=1&title_type=feature&year=1950,2012
Estoy usando el módulo BeautifulSoup. El siguiente es el código que estoy 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
Estoy obteniendo los siguientes resultados:
The Shawshank Redemption [u'Crime', u'Drama'] 142 mins. (1994)
Usando este código, podría raspar el título, el género, el tiempo de ejecución y el año, pero no pude raspar la identificación de la película imdb, ni la calificación. Después de inspeccionar los elementos (en el navegador Chrome), no puedo encontrar un patrón que me permita usar un código similar al anterior.
¿Alguien puede ayudarme a escribir el código que me permitirá raspar la identificación y las calificaciones de la película?
rating
no está definido. Si arreglas eso, también puedes agregarfrom BeautifulSoup import BeautifulSoup
, yimport requests
. ¿Y por qué no mostrar tambiénurl="http://etc"
para que no tengamos que hacer eso por nosotros mismos?