CRAWLER4J ile Gittigidiyor Günün Fırsatları

Öncelikle projemizi indirebileceğiniz GitHub adresi;

https://github.com/Gmotes/Crawler4jEasySearch

Projemiz 2 sınıftan oluşuyor ve amacı Gittigidiyor sitesindeki günün fırsatı ürünlerini toparlamak.

Controller ve Crawler sınıfları.

Controller sınıfı ;

        String crawlStorageFolder = "/crawler/testdata";
        int numberOfCrawlers = 4;
        CrawlConfig config = new CrawlConfig();
        config.setCrawlStorageFolder(crawlStorageFolder);
        config.setPolitenessDelay(1000);
        PageFetcher pageFetcher = new PageFetcher(config);
        RobotstxtConfig robotstxtConfig = new RobotstxtConfig();
        RobotstxtServer robotstxtServer = new RobotstxtServer(robotstxtConfig, pageFetcher);
        CrawlController controller = new CrawlController(config, pageFetcher, robotstxtServer);
        controller.addSeed("http://www.gittigidiyor.com/");
        controller.start(Crawler.class, numberOfCrawlers);


controller.start metodunun içerisine Crawler sınıfını ve çalışacak thread sayısını gönderiyoruz.

Gittigidiyor ana sayfasını seed olarak veriyoruz. Böylece crawler ın bu sayfa içerisindeki tüm linkleri toplanmasını sağlayacağız. setPolitenessDelay ile alt linklere ve onları kontrol ederken delay ekliyerek karşı tarafın servisini boğmamış oluyoruz.


 Crawler sınıfı;
 
@Override
public boolean shouldVisit(Page referringPage,WebURL url) {
 
     // Sadece günün fırsatına ait ürünleri kontrol etmeye devam ediyoruz.
     boolean a = url.getURL().startsWith("http://www.gittigidiyor.com/super-firsatlar/gunun-firsati");
 
     return a;
}



@Override
public void visit(Page page) {
     String url = page.getWebURL().getURL();

    try {
Document document = Jsoup.connect(url).get();
Elements titles = document.select("div");
     
        for (Element eleman : titles) {
                 
         if (eleman.className().equals("lp-title-content")) {
           
             System.out.println(eleman.html());
           
         }
        }
     

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


Gittigidiyor anasayfasındaki linkler toparlanmaya başlarken bu linklerin filtresi de shouldVisit metoduna düşmektedir. Biz bu örnekte Günün Fırsatları kısmıyla ilgileniyoruz. Böylece sadece bu linkteki bilgileri alacağız.

Tahmin edeceğiniz üzere sadece http://www.gittigidiyor.com/super-firsatlar/gunun-firsati içeriği visit metodu içine girecektir.

Bu kısımda Jsoup ile hangi ürünlerin sergilendiğini yakalayabileceğiz. Herkese kolay Gelsin.



Kaynak : http://kodcu.com/2012/12/java-programlama-dili-kullanarak-web-sitelerini-crawl-etme-tum-linklerini-ziyaret-etme/

Yorumlar

Bu blogdaki popüler yayınlar

IONIC BAŞLANGIÇ

Cannot resolve the collation conflict between “Turkish_CI_AS” and “SQL_Latin1_General_CP1_CI_AS” in the equal to operation

Golang working with interfaces and functions -3