-- Kütüphaneler

Jsoup | Giriş

Jsoup, html kodlarını ayrıştırmak için tasarlanmış bir kütüphanedir.(html parser)

Jsoup API altında 6 package vardır :

  1. org.jsoup
  2. org.jsoup.examples
  3. org.jsoup.helper
  4. org.jsoup.nodes
  5. org.jsoup.parser
  6. org.jsoup.safety
  7. org.jsoup.salect

Bir sürü class olmakla beraber asıl classlar şunlardır :

  1. Jsoup
  2. Document
  3. Element

Jsoup Class

org.jsoup.Jsoup sınıfı bize parse,connect,clean işlemleri için metodlar sağlar.Bunlar aşağıdaki resimde verilmiştir.

  • String içerisindeki html kodunu ayrıştırma işlemi
String html = "<html><head><title>First parse</title></head>"
  + "<body><p>Parsed HTML into a doc.</p></body></html>";

Document doc = Jsoup.parse(html);

 

parse(String html) metodu html stringinin içersindeki kodları yeni bir Document içerisine ayrıştırır.(parse)

  • URL’den document çekme

Eğer  parse edilecek kod dosya halinde elimizde yoksa ve bir URL’ye ait html kodlarını parse etmek istiyorsak öncelikle bir bağlantı kurulması gerekir.  Jsoup.connect(String url) metodu bunu sağlar.

Document doc = Jsoup.connect("http://example.com/").get();
String title = doc.title();
  • Dosyadan document çekme

Diskte HTML içeren bir dosya varsa ve bununla uğraşmak istiyorsak static Jsoup.parse(File in, String charsetName, String baseUri) metodu kullanılabilir.

File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");

 

parse(File in, String charsetName, String baseUri) metodu HTML dosyasını yükler ve parse eder, eğer ki yükleme sırasında herhangi bir hata ile karşılaşılacak olursa IOExcepiton fırlatılır. baseUri parametresi,  <base href>  elementi bulunmadan önce document içerisindeki ilişkili URL adreslerini çözümlemek için kullanılır. Eğer ki ilgilenilmiyorsa, bu parametreye boş bir string geçilebilir ya da diğer bir kardeş metod olan parse(File in, String charsetName) kullanılır.

  • URL’ye ait html kodunu ayrıştırma

Aşağıda bir sitenin başlığını(title) yazdıran program görüceksiniz. Burada önemli noktalardan bir tanesi başlığını almak istediğiniz sitenin açılış hızıdır, eğer site yavaş açılıyorsa socket hatası alabilirsiniz.

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;

public class printTitle {

    public static void main(String args[]) throws IOException{

        Document doc = Jsoup.connect("http://www.anadolu.edu.tr").get();
        String title = doc.title();
        System.out.println("Site Başlığı : " + title);
    }
}

connect(String url) yeni bir bağlantı oluşturur ve get() metodu ise bu URL’nin html kodlarının fetch ve parse işlemlerini halleder. Fetching sırasında herhangi bir hata olursa, IOException fırlatılır.

Program Çıktısı :

Site Başlığı : Anadolu Üniversitesi
  • Body Parsing

Elimizde HTML kodunun <body> kısmından bir parça varsa ( örneğin <div> içerisinde bir sürü <p> olan bir kod)  Jsoup.parseBodyFragment(String html) metodunu kullanabiliriz.

String html = "<div><p>Meriç BERBER</p>";
Document doc = Jsoup.parseBodyFragment(html);
Element body = doc.body();

 

parseBodyFragment() metodu yeni bir document oluşturur  ve içerisindeki <body> kısmına html’i parse eder. Eğer ki Jsoup.parse(String html) kulanılırsa da muhtemelen aynı sonuçla karışılaşılır ancak input’un bir <body> parçası olunduğu açıkça belirtildiği için kullanılan metod verilen html kodunun <body> parçası içerisine parse edilmesini garantiler.

Document.body() metodu documentin body elementini getirir. Bir eşiti de doc.getElementsByTag(“body) metodudur.

 

Yorum bırak

Yorum