İnternetten Veri Çekme
Merhabalar bu yazımda sizlere bir internet sitesinden film verilerinin çekmeyi göstereceğim. Bu film verilerinin isimlerini, yayınlandığı yılları ve rating puanlarını tablo halinde düzenli şekilde göstermeye çalıştım.
Öncelikle gerekli kütüphaneleri dahil etmekle başlayalım;
Veriyi nereden çekeceğimizi bildirmemiz gerekiyor. Bunun için internet sitemizin url adresini url adında bir değişkende tutabiliriz. Bundan sonrada o siteden veri almak için talepte bulunalım ve bunu da sonuç (response) adında değişkende tutalım;
Bakalım internetten verileri elde edip edemediğimizi print() ile kontrol edelim;
Böyle bir çıktı aldıysanız sorunsuz şekilde verilerimizi elde etmişiz demektir.
Şimdi elimizde sonuç değişkenin html içeriklerini alalım ve sonrasında da html içeriğimizi BeautifulSoup yardımıyla parçalara ayıralım. Böylelikle sayfamızın tüm kodlarını elde etmiş olacağız;
Tablomuza öncelikle filmlerin başlık kısımlarını ve ratinglerini alalım. Bunun için find_all() fonksiyonu yardımıyla yapabiliriz. Başlık kısımlarının internet sitemizdeki yerlerini bulalım;
td etiketinin içinde ve classı “titleColumn” olan kısım bizim film isimlerimiz barındırmaktadır. Başlık değişkeni ile tüm filmleri alalım;
Aynı durumu Imdb puanı içinde kontrol edelim;
td etiketli ve classı “ratingColumn imdbRating” olan kısım bizlerin ratinglerini barındırıyor. Bunu da ratingler değişkenine atayarak elde edelim;
Başlıklar ve ratingler verilerini çektikten sonra düzenlenmesine geçelim. Tüm verilerimizi tutacak bir listemiz olsun. Elimizde 250'şer adet veri olduğundan başlık ve rating değişkenlerimiz zip() fonksiyonuyla birleştirip içlerinde gezinebiliriz.
Birleştirdiğimiz bu değişkenlerin yalnızca text kısımlarını, aralarında boşluklar ile gelmiş yerlerin boşluklardan arındırılmış hallerini ve aynı zamanda film isim verilerini alırken indeks numarasını da barındırdığı için indeks numaralarından kurtarılmış hallerini temiz şekilde tanımladığımız listemize ekleyelim;
Listemize eklediğimiz elemanların birkaçına bakalım;
Hedeflediğimiz verileri tablo haline getirmekti şimdi elimizdeki verileri ilk başta filmler ve ratingler olarak ayıralım;
ratingler kısmınıda skorlar değişkeni ile tutalım;
Elimizdeki bu dataları birer frame haline getirelim;
Şimdi buradaki bir başka durum sözel değişken olan film değişkeninin yanında parantez içinde yıllar yazmakta bunları başka bir sütunda tutarak farklı 3 değişkenli bir frame elde edebiliriz. Bunun için filmlerin yanında yazan yılları ayırıp tablomuza eklemeye çalışalım;
Şuanda yaptığımız sadece tüm filmleri yanındaki parantez içindeki yıllardan ayırıp yeni film olarak adlandırdığımız listeye eklemek oldu. Birde bu temizlediğimiz yılları başka bir yerde tutalım;
Verileri birbirinden ayırdık ve şimdi de istediğimiz formata yani dataframe haline getirelim. Bunun için yeni tablo oluşturalım;
Şekilde de görüldüğü üzere artık tablomuz filmler, yıllar ve ımdb puanını ayrı ayrı barındırmaktadır. Son olarak elimizdeki verilerin hepsi object tipinde bunların görelim;
filmler object tipinde kalabilir fakat yıllar ve puan değişkenimiz sayısal oldukları için dönüşüm yapmamız gerekecektir;
Vaktinizi ayırdığınız için teşekkür ederim.