Eğer az çok web geçmişiniz varsa bilirsiniz CSS kullanırken veya Javascript kullanırken elementleri etiketleri ile, verdiğimiz idler ile veya atadığımız sınıflar ile çağırıp kullanırız.
Bu derste Document, Elements ve Element sınıflarında bulunan select(String selector) metodunun kullanımını göreceksiniz.
Bu metoda birçok şekilde parametre gönderebilirsiniz. İsterseniz elementin id değerini girersiniz, isterseniz sahip olduğu classı veya etikete ait href, src gibi nitelikleri kullanarak element arayabilirsiniz. Şimdi bunları nasıl kullanacağınıza bir göz atalım.
Basit bir örnekle html sayfasındaki h1 etiketlerinin içeriğini almak istersek :
Bu şekilde etiket isimlerini yazarak html nesnelerine ulaşabiliriz ancak çoğu zaman daha karmaşık şekilde aramanız gerekecek.
Örneğin class değeri kategoriler olan li elementlerini çekmeniz gerekecek veya png resimlerini çekmek istediğinizde img etiketinin src özelliği içerisinde .png ifadesi geçen elementleri arayacaksınız.
SEÇİCİ ÖZELLİKLERİ
tagname - Etiket Adı İle Ara
doc.select("h1") -Document nesnesindeki tüm h1 elementlerini getir
#Id - Elementi Id Değeri İle Ara
doc.select("#logo") - ID'si logo olan elementleri getir
doc.select("div#menu") - ID'si menu olan div elementlerini getir
.class - Class Özelliği İle Ara
doc.select(".floatLeft") - floatLeft Classında olan elementleri getir
doc.select("div.left") - Classı left olan div elementlerini getir
[attribute] - Etikete ait özelliği kullanarak ara
doc.select("a[href]") - href niteliğine sahip a elementlerini getir
[attribute = value]
doc.select("a[href=http://www.youtube.com/]") - href değeri bu adres olan elementleri getir
[attribute^= value]
doc.select("img[src^=gallery]") - src değeri gallery ile başlayan img elementlerini getir
[attribute$=value]
doc.select("img[src$=.png]") - src değerinin sonu .png ile biten img elementlerini getir
[attribute*=value]
doc.select("a[href*=jsoup]") - href değerinde jsoup kelimesi geçen a elementlerini getir
Tüm HTML Etiketlerine ait nitelikler(html attributes) :
https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes
http://jsoup.org/cookbook/extracting-data/selector-syntax
Devamı.. »
Bu derste Document, Elements ve Element sınıflarında bulunan select(String selector) metodunun kullanımını göreceksiniz.
Bu metoda birçok şekilde parametre gönderebilirsiniz. İsterseniz elementin id değerini girersiniz, isterseniz sahip olduğu classı veya etikete ait href, src gibi nitelikleri kullanarak element arayabilirsiniz. Şimdi bunları nasıl kullanacağınıza bir göz atalım.
Basit bir örnekle html sayfasındaki h1 etiketlerinin içeriğini almak istersek :
import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class JSoupDemo { public static void main(String[] args) { try { Document doc = Jsoup.connect("https://java4fun.blogspot.com.tr").get(); Elements table = doc.select("h1"); for (Element element : table) { System.out.println(element.text()); } } catch (Exception e) { e.printStackTrace(); } } }
Bu şekilde etiket isimlerini yazarak html nesnelerine ulaşabiliriz ancak çoğu zaman daha karmaşık şekilde aramanız gerekecek.
Örneğin class değeri kategoriler olan li elementlerini çekmeniz gerekecek veya png resimlerini çekmek istediğinizde img etiketinin src özelliği içerisinde .png ifadesi geçen elementleri arayacaksınız.
SEÇİCİ ÖZELLİKLERİ
tagname - Etiket Adı İle Ara
doc.select("h1") -Document nesnesindeki tüm h1 elementlerini getir
#Id - Elementi Id Değeri İle Ara
doc.select("#logo") - ID'si logo olan elementleri getir
doc.select("div#menu") - ID'si menu olan div elementlerini getir
.class - Class Özelliği İle Ara
doc.select(".floatLeft") - floatLeft Classında olan elementleri getir
doc.select("div.left") - Classı left olan div elementlerini getir
[attribute] - Etikete ait özelliği kullanarak ara
doc.select("a[href]") - href niteliğine sahip a elementlerini getir
[attribute = value]
doc.select("a[href=http://www.youtube.com/]") - href değeri bu adres olan elementleri getir
[attribute^= value]
doc.select("img[src^=gallery]") - src değeri gallery ile başlayan img elementlerini getir
[attribute$=value]
doc.select("img[src$=.png]") - src değerinin sonu .png ile biten img elementlerini getir
[attribute*=value]
doc.select("a[href*=jsoup]") - href değerinde jsoup kelimesi geçen a elementlerini getir
Tüm HTML Etiketlerine ait nitelikler(html attributes) :
https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes
UYGULAMAimport org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class JSoupDemo { public static void main(String[] args) { try { String url = "http://java4f.blogspot.com.tr/"; Document document = Jsoup.connect(url).get(); System.out.println("SAYFADAKİ PNG RESİMLERİNE AİT LİNKLER : \n"); //Src degerinin sonu .png ifadesiyle biten elementleri getir Elements pngImages = document.select("[src$=.png]"); for (Element element : pngImages) { //Resmin linkini yaz System.out.println(element.absUrl("src")); } System.out.println("\nSAYFADA İÇİNDE JSOUP KELİMESİ GEÇEN LİNKLER \n"); Elements jsoupTutorials = document.select("a[href*=jsoup]"); for (Element element : jsoupTutorials) { //Ilgili elementin href degerini yaz yani linkin tamamini System.out.println(element.attr("href")); } } catch (Exception e) { e.printStackTrace(); } } }#KAYNAK
http://jsoup.org/cookbook/extracting-data/selector-syntax