22 Kasım 2014 Cumartesi

Günün Çorbası: BeautifulSoup

Türkiye'de bilimle uğraşan ya da azımsanmayacak miktarda veri ile ilgilenen çoğu kurum ve ya kuruluş, üzerinde çalıştığı verileri İnternet'e koymaktan pek hoşlanmıyor sanırım. Açık bir şekilde verilerin yayınlanması, profesyonelliğin bir gereği olmak ile beraber aynı zamanda hem şeffaf bir şekilde kontrol edilebilirliği sağlamakta hem de verilere ihtiyaç duyan ve yarar sağlamaya çalışan kişiler için kritik bir rol oynamaktadır.

Google başta olmak üzere birçok büyük şirket (Twitter, Facebok vs.) verilerini zaten açık olarak sunmaktadır. Bununla beraber özellikle Birleşik Devletler'de gördüğüm kadarıyla belediyeler de şehir ile ilgili verilerini halkın kullanımına açmıştır.

Birleşik Devletler'deki uygulama gerçekten takdire değer. Tarayıcınızdan herhangi bir eyaletin verilerine şu şekilde erişebilirsiniz:

htttp://data.[eyalet_ismi].gov

Mesela https://data.cityofchicago.org/ ve ya https://data.ny.gov/ adreslerinde eyaletlerin ya da şehirlerin - aradaki farkı hala karıştırmaktayım ama çok da önemli değil - verilerine rahatlıkla ulaşabiliyoruz.

Türkiye'de böyle şeyler görmek pek mümkün değil. En azından Ankara için olmadığını biliyorum.

Her neyse, arada bazen bazı web sayfalarında düzenli olmasa da (.json, .csv vs.) bazı verileri görmek mümkün oluyor. Buna güzel ve güncel ve hatta tanıdık bir örnek olarak Boğaziçi Üniversitesi Kandilli Rasathanesi ve Deprem Araştırma Enstitüsü bünyesindeki Ulusal Deprem İzleme Merkezinin sitesini örnek gösterebiliriz.

http://www.koeri.boun.edu.tr/scripts/lst1.asp adresinden herkesin erişimine sunulan bilgiler aslında işlenecek veri değil, sadece bilgilendirme olarak değerlendirmek çok daha doğru. Fakat buna rağmen bu bilgilerle bile çalışabiliriz. Yeterli olmasa da bu bilgileri kullanarak merak ettiğimiz bazı sonuçları inceleyebiliriz. Ben de bu amaçla bu sitenin sunduğu verilerle bazı grafikler ve çıkarımlar yapabilirim kanaatindeyim. Python ile ilgili güzel bir alıştırma olacağını düşünerek yola çıkıyorum.

Bunu yapmadan önce kullanacağımız araçları tanıtmak ve incelemek gerekir.

BeautifulSoup gerçekten de bize çok yardımcı olacak. Python 3.x hem de 2.7 versiyonları için kullanılabilir çok yararlı bir kütüphane. 

Açıklamalar için kullanacağımız web sitesi kütüphanenin kendi web sitesi olacak.

http://www.crummy.com/software/BeautifulSoup/ alıştırma yapmak için güzel bir site.

Yükleme:
Python Package Index yoluyla:
  1. sudo apt-get install python-pip (Python Package Index'i yüklüyoruz.)
  2. pip install beautifulsoup4
Package Manager yoluyla:
  1. sudo apt-get install python3-bs4 (2.7 kullanıyorsanız python-bs4 olarak değiştirin.)
Yardım:
Yemek Tarifi:


İlk basamakta web sayfasına erişim için gerekli kütüphaneyi ve çorbamızı import ediyoruz.
2. ve 3. satırlarda web sayfasını Python ile açıyoruz ve 4. satırda kaynak dosyasını okuyoruz. Yapılan işlem, web sayfalarından bilgi çekmek için yapılması gereken standart işlemdir. 5. satırda çorbamızı oluşturuyoruz. 
'Soup' ismiyle BeautifulSoup için bir nesne oluşturuyoruz. Bundan sonraki tüm işlemleri bu nesne üzerinden gerçekleştireceğiz.

Şu haliyle print(soup) çıktısı, sizi unicode ile uğraştırmadan kaynağın çıktısını verir. Bunun yerine print(soup.prettify()) komutu girilirse girintileri de hesaba katarak daha 'düzgün' bir görünüm elde ederiz.

Anlatım için uygun olmadığı için üstteki örneği şimdilik geçelim ve kendimiz küçük bir web sayfası oluşturalım.



Hiç yorum yok:

Yorum Gönder