Veri analizini öğrenme çabasının bir parçası olarak kendi başıma Python kullanarak web kazıma öğrenmeye çalışıyorum. URL'si aşağıdaki imdb web sayfasını kazımaya çalışıyorum: http://www.imdb.com/search/title?sort=num_votes,desc&start=1&title_type=feature&year=1950,2012
BeautifulSoup modülünü kullanıyorum. Aşağıdaki kod kullanıyorum:
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
Aşağıdaki çıktıları alıyorum:
The Shawshank Redemption [u'Crime', u'Drama'] 142 mins. (1994)
Bu kodu kullanarak, başlık, tür, çalışma zamanı ve yıl kazıma olabilir ama imdb film kimliği ya da derecelendirme kazıma olamazdı. Elemanları inceledikten sonra (krom tarayıcıda), yukarıdaki gibi benzer kodu kullanmama izin verecek bir desen bulamıyorum.
Film kimliğini ve derecelendirmelerini kazımama izin verecek bir kod parçası yazmama yardımcı olan var mı?
rating
tanımlanmadığı için başarısız oluyor . Bunu düzeltirsenizfrom BeautifulSoup import BeautifulSoup
, ve ekleyebilirsinizimport requests
. Ve neden bunu göstermeyelimurl="http://etc"
ki bunu kendimiz için yapmak zorunda değiliz?