Saya mencoba mempelajari pengikisan web menggunakan Python sendiri sebagai bagian dari upaya mempelajari analisis data. Saya mencoba untuk mengikis halaman web imdb yang url-nya adalah sebagai berikut: http://www.imdb.com/search/title?sort=num_votes,desc&start=1&title_type=feature&year=1950,2012
Saya menggunakan modul BeautifulSoup. Berikut ini adalah kode yang saya gunakan:
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
Saya mendapatkan output sebagai berikut:
The Shawshank Redemption [u'Crime', u'Drama'] 142 mins. (1994)
Dengan menggunakan kode ini, saya bisa mengikis judul, genre, runtime, dan tahun tetapi saya tidak bisa mengikis id film imdb, maupun peringkat. Setelah memeriksa elemen (di browser chrome), saya tidak dapat menemukan pola yang akan memungkinkan saya menggunakan kode yang sama seperti di atas.
Adakah yang bisa membantu saya menulis potongan kode yang akan membuat saya mengikis id film dan peringkat?
rating
tidak didefinisikan. Jika Anda memperbaikinya, Anda juga bisa menambahkanfrom BeautifulSoup import BeautifulSoup
, danimport requests
. Dan mengapa tidak juga menunjukkanurl="http://etc"
agar kita tidak harus melakukan itu untuk diri kita sendiri?