HTMLParser ve urllib ile Web Sayfalarından Bilgi Almak

Bu yazıda, python kullanarak, internet sayfalarını okumak ve bu sayfalardan ilgilendiğimiz bilgileri toplamakla alakalı küçük bir örnek yapacağım. Örneğimizde, internetten bir html belgesi alacak ve bu html belgesindeki javascript'leri bir listeye toplayacağız.

Eğer daha önce bu konuda bir uğraşınız olmuşsa, neden SGMLLib değil de, HTMLParser kullandığımı merak edebilirsiniz. Bunun nedeni, python 3 ile birlikte, SGMLLib'in standard python modülleri içerisinden çıkarılması. HTMLParser modülü de html.parser modülüne taşındı, ancak o sorunu şu şekilde halledeceğim:

Devamını oku…

Benzer Yazı Analizi 2

Benzer Yazı Analizi 1 başlıklı yazıyı okuduysanız, iki yazı arasındaki benzerlikleri hesaplamaya çalışan bir algoritma yazmaya çalışıyordum ancak çok da başarılı olamamıştım. Bu yazıda, algoritmayı biraz geliştirdim ve aldığım sonuçlar tatmin edici oldu.

Bu yeni algoritmanın en önemli farkı, her kelimeye kendine göre katsayı ataması. Önceki yazıda bahsettiğim, Text similarity: an alternative way to search MEDLINE yazısını takip etmeye devam ettim, ve oradaki algoritmayı aynen uygulamaya çalıştım. Kodlar aşağıda:

Devamını oku…

Benzer yazı analizi 1

Benzer yazıları bulup, ziyaretçiye öneri göstermek zannettiğimden çok daha zor gibi görünüyor. Bir yandan düzgün bir algoritma oluşturmaya çalışırken, bir yandan da şu anda katettiğim yolu (her ne kadar çok olmasa da) aktarayım istedim.

Yazıların benzerliklerini hesaplamak için, Text similarity: an alternative way to search MEDLINE adlı makalede kosinüs katsayısı (Cosine Coefficient) formülünü gördüm (daha önce de başka bir yerde görmüştüm bu formülü, ama çıkartamıyorum şimdi :) ) ve denemeye karar verdim. Şimdilik, kelime ağırlıklarını formüle eklemeden bir deneme yaptım. Şu şekilde bir python dosyası ortaya çıktı:

Devamını oku…

Django Modelleriyle Paket Yöneticisi

Birçok web uygulama ve python geliştiricisi, Django'nun harika bir web çatısı olduğunu düşünür. Ancak, Django'yu bir web çatısı olmakla sınırlandırmak, bence biraz haksızlık olur. Django'nun parçalarının mümkün olduğu kadar birbirinden bağımsız olmasından dolayı, kolaylıkla istediğiniz parçasını, kendi uygulamalarınıza dahil edebilirsiniz. Django'nun kişisel olarak en sevdiğim yanı veritabanı API'si olduğu için, Django'nun veritabanı geliştirme arayüzünü nasıl kendi projemize dahil edebileceğimizi göstermek için, küçük bir örnek yapmak istedim.

Devamını oku…

If..Else yada Try..Except, hangisi ne zaman kullanılmalı?

Python öğrenen geliştiriciler, birkaç basit ders ardından try...except yapısıyla hata yakalama ve kurtarma yapmayı öğrenir. Bunu gerekli yerlerde kullanabilecek bilgi ve deneyim seviyesine kısa sürede erişebilir. Ancak, try..except yapısının daha egzotik kullanımları da mümkün. Try..except yapısıyla daha okunaklı ve temiz kod yazılabilir mi, yada ne zaman bu yapıyı kullanmaktan kaçınmalıdır sorusuna değinmek istedim. Birazdan okuyacaklarınız, benim bu konudaki kişisel görüşlerimdir. Kanıtlanmış veya toplumca kabul görmüş gerçekler olabilir veya olmayabilir.

Devamını oku…

Django ve Url Düzeltme

Internet tarayıcısına elle url girenler, url'leri yanlış yazmalarından dolayı gördükleri 404 sayfalarını hatırlayacaktır. Bu 404 sayfaları sinir bozucudur. Özellikle de ziyaretçiye kolaylık sağlayan bir özellikleri yoksa. 404 sayfaları, ziyaretçiye site haritası sunarak, ya da ziyaretçiye bazı önerilerde bulunarak ziyaretçiye kolaylık sağlayabilir. Ancak, 404 sayfasını atlayıp, ziyaretçiyi gerçekten gitmek istediği sayfaya yönlendirmek en doğrusu olacaktır.

Devamını oku…

5 Django İpucu

Başlangıç seviyesindeki anlatımlarda çok sık karşılaşamayacağınız, ancak, Django ile uygulama geliştirirken işinize yarayacak 5 ipucunu sizlerle paylaşmak istedim.

Devamını oku…

Django sunucusu olarak dotcloud

Son zamanlarda bilişim çevrelerinde sık sık duyabileceğiniz "cloud computing" teriminin henüz oturmuş bir sözlük anlamı yok. En sık kullanılan anlamında "cloud computing" bir bilgisayarın kaynaklarının çoğunlukla sanallaştırma yazılımlarıyla birlikte, birden fazla kişi tarafından bölüşülmesi demek. Bu hizmeti sağlayan "dotcloud" firmasının, django uygulamalarını destekleyen bir altyapısı var ve belirli sınırlamalar çerçevesinde bu hizmeti ücretsiz alabiliyorsunuz.

Devamını oku…