0

Java ile bir web sayfasının kaynak kodlarını alma

Merhaba ardakdaşlar bu yazıda bir web sayfasının kaynak kodlarını nasıl alırız bunu anlatan bir örnek yapacağım. Bir köşede dursun belki bir gün lazım olur diye buraya not alıyorum. İsteyen arkadaşlar kullanabilir. Buyrun kodları yazmaya başlayalım.  Senaryomuzdan yani algoritmamızdan bahsedelim. İlk olarak bir “URL” nesnesi oluşturuyoruz. oluşturduğumuz bu URL’ye bağlanmak için bir “URLConnection” nesnesi oluşturuyorum. Böylece belirtilen adrese bağlantı sağlayacak kodlarım hazır. Bundan sonra verileri bir stream olarak alacağımdan bir “InputStream” nesnesi oluşturuyorum ve URLConnection nesnemin getInputStream() metodu ile dataları  ascıı kodu olarak tek tek almaya başlayacağım. -1 değeri geldiğinde stream’ın sonuna gelmiş oluyorum. buna göre kodlarımızı yazalım.

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

public class Main {

    public static void main(String[] args) {
	// write your code here

        // Merhaba Arkadaşlar bu video da java ile herhangi bir url deki kaynak kodları nasıl
        // çekeriz bunu anlatmaya çalışacağımız.
        // Öncelikle bir url ye bağlanalım


        try {
            URL openUrl=new URL("https://yazdoldur.com/programlama/javafx/javafx-grafiklerle-calisma/");
            URLConnection connection=openUrl.openConnection();

            // şimdi buradan gelen verileri bir inputStream nesnesine alacağız

            InputStream is=connection.getInputStream();

            int gelenData = 0;
            do {
                gelenData=is.read();

                if(gelenData!=-1){ // -1 olunda okumanın sonuna yani dosyanın sonuna geldiğimizi ifade ediyor.
                    System.out.print((char) gelenData);

                }


            }while (gelenData!=-1);


        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }


        // böylece web sayfasının kaynak kodlarını çekmiş olduk .
    }
}

Projemizi biraz daha geliştirelim ve internet sayfasının kaynak kodlarını içinde istediğimiz verilere ulaşalım bunun için Regular Expression da kullanacağız. 

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {

    public static void main(String[] args) {
	// write your code here

        // Merhaba Arkadaşlar bu video da java ile herhangi bir url deki kaynak kodları nasıl
        // çekeriz bunu anlatmaya çalışacağımız.
        // Öncelikle bir url ye bağlanalım

        StringBuilder htmlText=new StringBuilder();


        try {
            URL openUrl=new URL("https://yazdoldur.com/programlama/javafx/javafx-grafiklerle-calisma/");
            URLConnection connection=openUrl.openConnection();

            // şimdi buradan gelen verileri bir inputStream nesnesine alacağız

            InputStream is=connection.getInputStream();


            InputStreamReader isReader=new InputStreamReader(is,"UTF-8"); // bazı karakterlerin düzgün çıkması için UTF-8 seçtik
            int gelenData = 0;
            do {
                gelenData=isReader.read();

                if(gelenData!=-1){ // -1 olunda okumanın sonuna yani dosyanın sonuna geldiğimizi ifade ediyor.
                  //  System.out.print((char) gelenData);
                    htmlText.append((char)gelenData);

                }


            }while (gelenData!=-1);


        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }


        // böylece web sayfasının kaynak kodlarını çekmiş olduk .

        // Projemizi biraz daha ileri götürelim ve regularExpression kullanarak
        // Kaynak kodları içinde istediğimiz etiketler arasındaki verileri alalım

        String regexPattern="(<p>)(.*?)(</p>)";
        Pattern pattern=Pattern.compile(regexPattern);
        Matcher matcher=pattern.matcher(htmlText);

        while (matcher.find()){

            System.out.println(matcher.group(2));

        }

    }
}

 

admin

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir