17 Mayıs 2014 Cumartesi

JSoup - HTML Sayfasındaki Resimleri Çekmek

Java ile bir HTML sayfasındaki resimleri çekmek için jsoup kullanarak img etiketine sahip elementler bulunur. Elde edilen her bir html elementinin src özelliğini kullanarak resmin linki elde edilir ve bu link üzerinden ilgili resim dosyası indirilir.

Bu örnekte, verilen url içerisindeki resimleri, resimlerin linkleri ve dosya adlarını nasıl bulacağınızı göreceksiniz.

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;

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

public class JSoupDemo {

 //Resimlerin cekilecegi web sayfasi
 private final String url = "http://java4fun.blogspot.com.tr";
    
 //Resimlerin kaydedilecegi dizin
   private final String filePath = "K:/resimler";

    public void getAllImages()
    {
       try 
       {
            //Sayfaya baglanma ve HTML icerigin alinmasi
            Document doc = Jsoup.connect(url).get();

            //sayfadaki img etiketine sahip tum html elementlerini al
            Elements img = doc.getElementsByTag("img");

             //Her bir elementin url bilgisini al ve resimi dosyaya yazdir 
             for (Element el : img) 
             {
                  //Her bir resmin linkini al
                  String src = el.absUrl("src");
                  System.out.println("Resim URL : " +src);

                  //Resmin linkini kullanarak bilgisayara indir
                  writeImages(src);
             }

       } 
       catch (IOException e) 
       {
             e.printStackTrace();
       }
       
    }
    
    public void writeImages(String src) throws MalformedURLException {

         //Src linki uzerinden dosya ismini ayristir
         int indexname = src.lastIndexOf("/");
 
         if (indexname == src.length()) {
             src = src.substring(1, indexname);
         }
 
         indexname = src.lastIndexOf("/")+1;
         String imageName = src.substring(indexname, src.length());
 
         System.out.println("Dosya Adı : "+imageName);
        
         URL url = new URL(src);
         
         //Veriyi dosyaya yaz
         try(OutputStream out = new BufferedOutputStream(new FileOutputStream( filePath + imageName));
          InputStream in = url.openStream())
         {
            for (int b; (b = in.read()) != -1;) 
            {
                   out.write(b);
            }
         }
         catch (Exception e)
       {
                e.printStackTrace();
         }

    }
    
    public static void main(String[] args) {

        JSoupDemo test = new JSoupDemo();
        test.getAllImages();
    }
    
}
#KAYNAK
http://examples.javacodegeeks.com/enterprise-java/html/download-images-from-a-website-using-jsoup/

2 yorum:

  1. Gerçekten güzelmiş, denediğimde gördüm.Ayrıca kaynak göstererek paylaşım yaptığınız için tebrikler...

    YanıtlaSil
  2. Projeksiyon Lambası, Projeksiyon Lambaları, Projeksiyon Tamiri, Lamba Değişimi

    YanıtlaSil

Java4Fun Copyright © 2011 | Template created by O Pregador | Powered by Templates de luxo