Merhaba arkadaşlar. Jsoup kütüphanesi ile ilgili yazılarımıza devam ediyoruz. Önceki yazıda dediğimiz gibi, Jsoup kullanabilmek için temel HTML-CSS bilgisi gereklidir. Çünkü, Jsoup bir HTML parser kütüphanesidir, dolayısı ile kullanabilmek için de HTML hakkında temel bilgiye sahip olmalıyız.
Bu kısa hatırlatmadan sonra konumuza devam edelim. Bugün, belirli özelliklerdeki HTML nesnelerine nasıl erişebileceğimizi inceleyeceğiz. Elimizde, aşağıdaki gibi bir HTML dosyası olsun
Bu HTML dosyasını nasıl Jsoup ile okuyacağımızı önceki yazıda görmüştük. Ancak, biz o sadece tüm p tag'lerini almıştık. Peki, yukarıda gördüğünüz gibi, sadece istediğimiz id'ye sahip olan bir p tag'ini nasıl elde edebiliriz? Mesela id'si mobil olan p tag'ini almak istiyoruz. O zaman aşağıdaki gibi bir kod yazmamız gerekiyor. İnceleyelim :)
Bildiğiniz gibi, HTML sayfalarında id değeri tag'lere özeldir ve sadece bir kez kullanılır. Bu yüzden, getElementById() metoduna, istediğimiz id değerini vererek rahat bir şekilde ulaşabildik.
Aynı zamanda, class değerine sahip olan tag'lerede erişebiliriz. İnceleyelim
Sanırım örnekler yeterince anlaşılır oldu. İsterseniz, bir sonraki metoda geçmeden önce bir tekrar edelim. İlk örnekte, id değerlerini kullanarak istediğimiz tag'e nasıl ulaşacağımızı inceledik. Dikkat ederseniz, id değeri ile bulduğumuz sonuç bir liste değil, Element nesnesidir. Yani tek bir nesne. Çünkü, id değeri HTML sayfalarında özeldir ve sadece tek bir tag üzerinde kullanılır. Ancak, id değerini HTML sayfalarında birden fazla vermeniz durumunda hata oluşmaz, bazen yanlışlıkla id değeri birden fazla eleman için eklenebilir. Jsoup kütüphanesi, ilk bulduğu id değerine sahip elemanı geri döndürecektir.
İkinci örnekte, class değerini kullandık. HTML sayfalarında aynı class değerine sahip birden fazla tag olabilir. Bu yüzden, örneğimizde "programlama" class özelliğine sahip olan tag aradığımız zaman geriye Elements türünden bir liste dönecektir.
Bunların dışında, birkaç metot daha var. Bunlardan birisi getElementsByAttributeValue() metodudur. İki parametre alır. Birincisi özellik, ikincisi ise bu özelliğin değeridir, yani aradığımız değer. Mesela yukarıda kullandığımız getElementById() ve getElementsByClass() metotlarına alternatif olarak şunu kullanabiliriz.
Ve son özellik, select() metodu. Bu metot, birtakım özel karakterler ile elemanlara ulaşma imkanı verir. Mesela sayfada png uzantılı dosyaları bulma, belirli bir adrese giden linkleri toplama vs vs. Son bir örnek yapalım.
Yukarıda select() metodu içerisinde kullandığım ifade, bir css seçicisidir. Css Selector hakkında daha fazla bilgi için, w3schools adresine bakabilirsiniz.
Şu adresten,Jsoup ile ilgili daha detaylı bilgi alabilirsiniz,örnekleri inceleyebilirsiniz. Sorularınız varsa sorabilirsiniz, elimden geldiği kadar yardımcı olmaya çalışırım. Şimdilik görüşmek üzere :)
Bu kısa hatırlatmadan sonra konumuza devam edelim. Bugün, belirli özelliklerdeki HTML nesnelerine nasıl erişebileceğimizi inceleyeceğiz. Elimizde, aşağıdaki gibi bir HTML dosyası olsun
Bu HTML dosyasını nasıl Jsoup ile okuyacağımızı önceki yazıda görmüştük. Ancak, biz o sadece tüm p tag'lerini almıştık. Peki, yukarıda gördüğünüz gibi, sadece istediğimiz id'ye sahip olan bir p tag'ini nasıl elde edebiliriz? Mesela id'si mobil olan p tag'ini almak istiyoruz. O zaman aşağıdaki gibi bir kod yazmamız gerekiyor. İnceleyelim :)
Bildiğiniz gibi, HTML sayfalarında id değeri tag'lere özeldir ve sadece bir kez kullanılır. Bu yüzden, getElementById() metoduna, istediğimiz id değerini vererek rahat bir şekilde ulaşabildik.
Aynı zamanda, class değerine sahip olan tag'lerede erişebiliriz. İnceleyelim
Sanırım örnekler yeterince anlaşılır oldu. İsterseniz, bir sonraki metoda geçmeden önce bir tekrar edelim. İlk örnekte, id değerlerini kullanarak istediğimiz tag'e nasıl ulaşacağımızı inceledik. Dikkat ederseniz, id değeri ile bulduğumuz sonuç bir liste değil, Element nesnesidir. Yani tek bir nesne. Çünkü, id değeri HTML sayfalarında özeldir ve sadece tek bir tag üzerinde kullanılır. Ancak, id değerini HTML sayfalarında birden fazla vermeniz durumunda hata oluşmaz, bazen yanlışlıkla id değeri birden fazla eleman için eklenebilir. Jsoup kütüphanesi, ilk bulduğu id değerine sahip elemanı geri döndürecektir.
İkinci örnekte, class değerini kullandık. HTML sayfalarında aynı class değerine sahip birden fazla tag olabilir. Bu yüzden, örneğimizde "programlama" class özelliğine sahip olan tag aradığımız zaman geriye Elements türünden bir liste dönecektir.
Bunların dışında, birkaç metot daha var. Bunlardan birisi getElementsByAttributeValue() metodudur. İki parametre alır. Birincisi özellik, ikincisi ise bu özelliğin değeridir, yani aradığımız değer. Mesela yukarıda kullandığımız getElementById() ve getElementsByClass() metotlarına alternatif olarak şunu kullanabiliriz.
Ve son özellik, select() metodu. Bu metot, birtakım özel karakterler ile elemanlara ulaşma imkanı verir. Mesela sayfada png uzantılı dosyaları bulma, belirli bir adrese giden linkleri toplama vs vs. Son bir örnek yapalım.
Yukarıda select() metodu içerisinde kullandığım ifade, bir css seçicisidir. Css Selector hakkında daha fazla bilgi için, w3schools adresine bakabilirsiniz.
Şu adresten,Jsoup ile ilgili daha detaylı bilgi alabilirsiniz,örnekleri inceleyebilirsiniz. Sorularınız varsa sorabilirsiniz, elimden geldiği kadar yardımcı olmaya çalışırım. Şimdilik görüşmek üzere :)