J'essaie d'apprendre le grattage Web en utilisant Python par moi-même dans le cadre d'un effort pour apprendre l'analyse des données. J'essaie de gratter la page Web imdb dont l'URL est la suivante: http://www.imdb.com/search/title?sort=num_votes,desc&start=1&title_type=feature&year=1950,2012
J'utilise le module BeautifulSoup. Voici le code que j'utilise:
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
J'obtiens les sorties suivantes:
The Shawshank Redemption [u'Crime', u'Drama'] 142 mins. (1994)
En utilisant ce code, je pouvais gratter le titre, le genre, la durée d'exécution et l'année, mais je ne pouvais pas gratter l'ID du film imdb, ni la note. Après avoir inspecté les éléments (dans le navigateur Chrome), je ne suis pas en mesure de trouver un modèle qui me permettra d'utiliser un code similaire à celui ci-dessus.
Quelqu'un peut-il m'aider à écrire le morceau de code qui me permettra de gratter l'identifiant et les notes du film?
rating
n'est pas défini. Si vous corrigez cela, vous pouvez également ajouterfrom BeautifulSoup import BeautifulSoup
etimport requests
. Et pourquoi ne pas montrer aussiurl="http://etc"
pour que nous n'ayons pas à le faire pour nous-mêmes?