Merhaba arkadaşlar. Hatırlarsanız, Java ile ağ programlama yazılarında, web sitesinden bilgiler almayı görmüştük. Sayfanın kaynak kodunu görme, server bilgisini alma, içerik tipini öğrenme gibi birçok işlemi yapabiliyoruz. Aslında bunlardan fazlasını da yapabiliriz. Mesela nasıl? Örneğin web sayfasında bulunan linkleri elde etmek isteyebiliriz, yada resimlerin adreslerini bir listeye koymak isteyebiliriz.
Bunu yapmak için, önce sayfanın kaynağını çekeriz sonra da regular expression(düzenli ifadeler) yardımı ile bilgileri parçalarız. Ama, bu hem zordur hem de vakit alır. Bu işi yapan kütüphaneler varken, oturup tekrardan tekerleği icat etmenin bir anlamı yok. İşte bu kütüphanelerden birisi de jsoup kütüphanesidir. Bu kütüphane, HTML parse etmeye yani, HTML belgelerini parçalamaya ve istediğimiz nesnelere ulaşmaya yarar. Tabi bunun için biraz HTML bilgisi olması gerekir. HTML kodları şuna benzerdir
Bu kodlardan oluşan bir web sayfasını Java'da açtığımızda, eğer
arasında ne yazdığını bulmak istersek, Jsoup kullanabiliriz. HTML nesnelerine ulaşım DOM(Document Object Model - Döküman Nesnesi Modeli) metodu ile olur. Yani bir browser sayfayı belge olarak kabul eder, içindeki herşeyi de(resim,link,form) bir nesne olarak kabul eder.
tag'ine ulaşmak için önce html,sonra body,sonrada p tag'ine ulaşır. Tabi, bugün web sayfalarında kodlar bundan çok daha karmaşıktır. Ancak, kütüphaneler yardımı ile istediğimiz tag'lere çok kolay ulaşabiliriz.
Şimdi, ilk olarak Jsoup kütüphanesini indirip projemize dahil etmemiz gerekiyor. İndirmek için şu adresi kullanabilirsiniz. İndirdikten sonra projeye dahil edelim ve kullanmak için hazırlıklara başlayalım. Projeye nasıl dahil edeceğimizi burda anlatmıyorum, ancak yapamazsanız yorum olarak bildirin elimden geldiği kadar yardımcı olmaya çalışırım.
Evet, artık kullanmaya başlayabiliriz. Bu yazıda örnek olarak http://example.com adresi üzerinde denemeler yapacağız. Siteye girip bakarsanız, orta kısımda ingilizce bir yazı olduğunu görürsünüz. Bu yazı tag'leri içinde yazılmış. Şimdi Java ile siteye bağlanalım ve bu yazıyı ekrana dökelim.
Çıktısı
Gördüğünüz gibi çok basit. Aynı şekilde, sayfanın başlığını da bu şekilde alabiliriz. Sayfanın başlığı arasında olduğu için, p yerine title yazarak, title tag'ine ulaşabiliriz.
Şimdi yukarıda yazdığımız kodu kısaca açıklayalım. İlk olarak gerekli paketleri import ettik. Bu paketlerden Document, sayfayı temsil eder. Yani html kodlarından oluşan bütünü. Jsoup sınıfının connect() metodu ile siteye bağlantı kurduk, daha sonra get() metodu ile sayfanın kaynak kodlarını Document nesnesine aktardık. Tabi ki her zaman bir siteye bağlanmak zorunda değiliz. Elimizde html kodlarını içeren bir String varsa, bunu da parse edebiliriz. Buna da birazdan değineceğiz.
Sayfayı değişkene aktardıktan sonra, artık sayfanın nesnelerine ulaşabiliriz. Nesnelere ulaşmak için birden fazla yol var. Sadece tag adını vererek sayfada bu tag'lerin hepsine ulaşabiliriz ve Elements türünden bir listeye aktarabiliriz. Bulduğumuz tag'ler birer Element olarak listenin içinde yer alıyor. Koda bakarsanız, for döngüsünde her elemana Element türünden p dedik ve döngü oluşturduk. Sonrada bunların yazılarını text() metodu yardımı ile ekrana yazdık.
Dediğim gibi, bir siteye bağlanarak html kodlarını alıp parse etmek zorunda değiliz. Elimizde html kodları varsa ve bunu String değişkene aktardıysak, aşağıdaki örnek kodda olduğu gibi parse edebiliriz.
Eğer elinizde html uzantılı dosyanız varsa, File ile açıp parse() metoduna parametre olarak verirseniz, dosyayı parse edebilirsiniz.
Bu yazıda bu kadar yeterli. Bir sonraki yazıda buluşmak dileğiyle...
Bunu yapmak için, önce sayfanın kaynağını çekeriz sonra da regular expression(düzenli ifadeler) yardımı ile bilgileri parçalarız. Ama, bu hem zordur hem de vakit alır. Bu işi yapan kütüphaneler varken, oturup tekrardan tekerleği icat etmenin bir anlamı yok. İşte bu kütüphanelerden birisi de jsoup kütüphanesidir. Bu kütüphane, HTML parse etmeye yani, HTML belgelerini parçalamaya ve istediğimiz nesnelere ulaşmaya yarar. Tabi bunun için biraz HTML bilgisi olması gerekir. HTML kodları şuna benzerdir
Bu kodlardan oluşan bir web sayfasını Java'da açtığımızda, eğer
arasında ne yazdığını bulmak istersek, Jsoup kullanabiliriz. HTML nesnelerine ulaşım DOM(Document Object Model - Döküman Nesnesi Modeli) metodu ile olur. Yani bir browser sayfayı belge olarak kabul eder, içindeki herşeyi de(resim,link,form) bir nesne olarak kabul eder.
tag'ine ulaşmak için önce html,sonra body,sonrada p tag'ine ulaşır. Tabi, bugün web sayfalarında kodlar bundan çok daha karmaşıktır. Ancak, kütüphaneler yardımı ile istediğimiz tag'lere çok kolay ulaşabiliriz.
Şimdi, ilk olarak Jsoup kütüphanesini indirip projemize dahil etmemiz gerekiyor. İndirmek için şu adresi kullanabilirsiniz. İndirdikten sonra projeye dahil edelim ve kullanmak için hazırlıklara başlayalım. Projeye nasıl dahil edeceğimizi burda anlatmıyorum, ancak yapamazsanız yorum olarak bildirin elimden geldiği kadar yardımcı olmaya çalışırım.
Evet, artık kullanmaya başlayabiliriz. Bu yazıda örnek olarak http://example.com adresi üzerinde denemeler yapacağız. Siteye girip bakarsanız, orta kısımda ingilizce bir yazı olduğunu görürsünüz. Bu yazı tag'leri içinde yazılmış. Şimdi Java ile siteye bağlanalım ve bu yazıyı ekrana dökelim.
Çıktısı
Gördüğünüz gibi çok basit. Aynı şekilde, sayfanın başlığını da bu şekilde alabiliriz. Sayfanın başlığı
Şimdi yukarıda yazdığımız kodu kısaca açıklayalım. İlk olarak gerekli paketleri import ettik. Bu paketlerden Document, sayfayı temsil eder. Yani html kodlarından oluşan bütünü. Jsoup sınıfının connect() metodu ile siteye bağlantı kurduk, daha sonra get() metodu ile sayfanın kaynak kodlarını Document nesnesine aktardık. Tabi ki her zaman bir siteye bağlanmak zorunda değiliz. Elimizde html kodlarını içeren bir String varsa, bunu da parse edebiliriz. Buna da birazdan değineceğiz.
Sayfayı değişkene aktardıktan sonra, artık sayfanın nesnelerine ulaşabiliriz. Nesnelere ulaşmak için birden fazla yol var. Sadece tag adını vererek sayfada bu tag'lerin hepsine ulaşabiliriz ve Elements türünden bir listeye aktarabiliriz. Bulduğumuz tag'ler birer Element olarak listenin içinde yer alıyor. Koda bakarsanız, for döngüsünde her elemana Element türünden p dedik ve döngü oluşturduk. Sonrada bunların yazılarını text() metodu yardımı ile ekrana yazdık.
Dediğim gibi, bir siteye bağlanarak html kodlarını alıp parse etmek zorunda değiliz. Elimizde html kodları varsa ve bunu String değişkene aktardıysak, aşağıdaki örnek kodda olduğu gibi parse edebiliriz.
Eğer elinizde html uzantılı dosyanız varsa, File ile açıp parse() metoduna parametre olarak verirseniz, dosyayı parse edebilirsiniz.
Bu yazıda bu kadar yeterli. Bir sonraki yazıda buluşmak dileğiyle...
Yorumlar
Yorum Gönder