-- Kütüphaneler

Jsoup | HTML Elementlerine Erişim

HTML kodunu bir Document’e parse ettikten sonra bu kod içerisindeki bazı elementlere, elementlerin içerisindeki datalara erişmek isteyebiliriz.

Bunun için ;

  1. Node.attr(String key) metodu bir HTML attribute’nın değerini getirir. Örneğin , bir elementin text değerine erişmek için Element.text() metodu kullanılır.

Basit bir HTML kodunun elementlerine ulaşan bir program yazalım.

HTML kodu şöyle olsun :

<p>An <a href=’http://example.com/’><b>example</b></a> link.</p>

Bu HTML kodu browser tarafıdan renderlendikten sonra bize şöyle gözükecektir : An example link.

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class JsoupDeneme {

    public static void main(String Args[]){

        String html = "<p>An <a href='http://example.com/'><b>example</b></a> link.</p>";
        Document doc = Jsoup.parse(html);
        Element link = doc.select("a").first();

        String text = doc.body().text(); // "An example link"
        String linkHref = link.attr("href"); // "http://example.com/"
        String linkText = link.text(); // "example""
        String linkOuterH = link.outerHtml();// "<a href="http://example.com"><b>example</b></a>"
        String linkInnerH = link.html(); // "<b>example</b>"
        
    }
}

Yukardaki kod parçası öncelikle bir string içerisinde tutulan HTML kodunu doc adlı Document içerisine parse eder. Daha sonra bu Document içerisinden doc.select(“a).first() metodu ile ilk link içeren HTML kodu bulunur. Daha sonra çeşitli metodlarla bu HTML kodunun çeşitli kısımlarına erişilir. Misal link.text() metodu , HTML kodunun text kısmına (example) erişmiştir.

Yukardaki kod parçası temel erişim metodlarını içeriyor. Şunlar da ek metodlar :

  • Element.id() = Elementin id değeri.
  • Element.tagName() = Elementin tag değeri.
  • Element.className() = Elementin class adı.
  • Element.hasClass(String className) = Elementin belirtilen class adında olup olmadığını test eder.

URL İçeren Elementler :

HTML kodları içerisinde relative URL veya absolute URL bulunabilir. Relative URL , gidilen linkin veritabanında tutulduğu yol şeklindedir.(/mericberber/downloads/indir.php gibi). Absolute URL ise tarayıcıya yazdığımız http:// şeklinde başlayan URL şeklidir.

Eğer ki  linkin Absolute URL kısmına erişmek isteniyorsa Jsoup kütüphanesinde bunu abs: prefixi(ön ad) ile yapılır.

Örneğin :

Document doc = Jsoup.connect("http://jsoup.org").get();

Element link = doc.select("a").first();
String relHref = link.attr("href"); // == "/"
String absHref = link.attr("abs:href"); // "http://jsoup.org/"

 

 

Yorum bırak

Yorum