Java ile uğraşan hemen herkesin bir noktada aklına şu fikir gelir:
"Bir web sitesindeki verileri otomatik olarak çekebilir miyim?"
Mesela bir e-ticaret sitesindeki ürün fiyatlarını takip etmek,
bir haber sitesindeki son içerikleri listelemek veya düzenli olarak güncellenen verileri kendi sistemine aktarmak isteyebilirsin.
İşte tam bu noktada web scraping devreye giriyor.
Java tarafında bu iş için yıllardır kullanılan ve hâlâ popülerliğini koruyan kütüphanelerden biri de Jsoup.
Özellikle HTML parse etme konusunda oldukça başarılı ve öğrenmesi de diğer birçok alternatife göre daha kolay.
Sevgili Dostlar Bu yazıda Jsoup'un ne olduğuna, nasıl kullanıldığına ve veri çekme işlemlerinde neden bu kadar tercih edildiğine yakından bakacağız.
Normalde bir kullanıcı tarayıcı üzerinden sayfayı açar ve bilgileri görür. Web scraping işleminde ise bunu bir yazılım yapar.
Örneğin:
gibi işlemler web scraping kapsamına girer.
Özellikle CSS Selector desteği sayesinde HTML elemanlarını bulmak oldukça kolay hale geliyor.
Gradle kullananlar ise şu satırı ekleyebilir:
implementation 'org.jsoup:jsoup:1.18.3'
Kurulum kısmı genellikle birkaç dakikadan fazla sürmez.
Örneğin:
Bu kod belirtilen URL'ye gider ve sayfanın HTML içeriğini alır. Artık elimizde işleyebileceğimiz bir Document nesnesi vardır.
Bağlantı kurduktan sonra basit bir örnek yapalım.
Bu satır sayfanın <title> etiketindeki değeri ekrana yazdırır.
Küçük gibi görünse de aslında scraping işleminin ilk adımı budur.
Örneğin tüm haber başlıklarını çekmek istediğimizi düşünelim.
Ardından:
Bu kadar.
Sayfadaki tüm H2 etiketleri ekrana basılacaktır.
İlk kez kullanan birçok geliştirici bu noktada Jsoup'un ne kadar sade olduğunu fark ediyor.
Örnek:
Bu ifade "product-price" sınıfına sahip tüm elemanları getirir.
Sonrasında:
Bu yöntem özellikle crawler geliştirenlerin sık kullandığı bir yaklaşımdır.
Eğer hedef sayfa verileri doğrudan HTML içinde sunuyorsa Jsoup çoğu zaman yeterlidir.
Bazı siteler:
Böyle durumlarda yalnızca Jsoup yeterli olmayabilir.
Özellikle React, Vue veya Angular kullanan modern uygulamalarda veriler sonradan yüklendiği için Selenium veya Playwright gibi çözümler gerekebilir.
Aşağıdaki senaryolarda Jsoup oldukça başarılıdır:
Haber siteleri
Bloglar
Statik kurumsal siteler
Ürün listeleme sayfaları
Basit veri toplama projeleri
Ancak içerik tamamen JavaScript ile oluşturuluyorsa farklı araçlara yönelmek gerekebilir.
Bunun nedeni yalnızca hızlı olması değil, aynı zamanda öğrenme sürecini gereksiz yere karmaşıklaştırmaması.
Birkaç satır kodla sayfa içeriğini okuyabilmek ve istediğin veriyi çekebilmek özellikle yeni başlayanlar için büyük avantaj sağlıyor.
Eğer Java ile veri toplama, fiyat takibi, içerik analizi veya otomasyon projeleri geliştirmeyi düşünüyorsan,
Jsoup öğrenmek harcanan zamana fazlasıyla değen araçlardan biri olacaktır.
Bir dahaki makalemizde görüşene dek mavi ekransız bugsuz ve sorunsuz sistemlerle çalışmanız dileği ile hoşça kalın
"Bir web sitesindeki verileri otomatik olarak çekebilir miyim?"
Mesela bir e-ticaret sitesindeki ürün fiyatlarını takip etmek,
bir haber sitesindeki son içerikleri listelemek veya düzenli olarak güncellenen verileri kendi sistemine aktarmak isteyebilirsin.
İşte tam bu noktada web scraping devreye giriyor.
Java tarafında bu iş için yıllardır kullanılan ve hâlâ popülerliğini koruyan kütüphanelerden biri de Jsoup.
Özellikle HTML parse etme konusunda oldukça başarılı ve öğrenmesi de diğer birçok alternatife göre daha kolay.
Sevgili Dostlar Bu yazıda Jsoup'un ne olduğuna, nasıl kullanıldığına ve veri çekme işlemlerinde neden bu kadar tercih edildiğine yakından bakacağız.
Web Scraping Nedir?
En basit tanımıyla web scraping, bir internet sayfasındaki verilerin program aracılığıyla okunması ve işlenmesidir.Normalde bir kullanıcı tarayıcı üzerinden sayfayı açar ve bilgileri görür. Web scraping işleminde ise bunu bir yazılım yapar.
Örneğin:
- Haber başlıklarını çekmek
- Döviz kurlarını almak
- Ürün fiyatlarını takip etmek
- Blog içeriklerini listelemek
- İlan sitelerindeki verileri toplamak
gibi işlemler web scraping kapsamına girer.
Neden Jsoup Tercih Ediliyor?
Java ekosisteminde HTML işlemek için farklı araçlar bulunsa da Jsoup'un öne çıkmasının birkaç önemli nedeni var.Özellik | Jsoup |
|---|---|
| Öğrenme kolaylığı | Çok yüksek |
| HTML ayrıştırma | Başarılı |
| CSS seçicileri desteği | Var |
| Performans | İyi |
| Kurulum | Basit |
| Açık kaynak | Evet |
Özellikle CSS Selector desteği sayesinde HTML elemanlarını bulmak oldukça kolay hale geliyor.
Projeye Jsoup Nasıl Eklenir?
Maven kullanan bir projede dependency eklemek yeterlidir.
JavaScript:
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.18.3</version>
</dependency>
Gradle kullananlar ise şu satırı ekleyebilir:
implementation 'org.jsoup:jsoup:1.18.3'
Kurulum kısmı genellikle birkaç dakikadan fazla sürmez.
Bir Web Sayfasına Bağlanmak
İlk adım sayfayı okumaktır.Örneğin:
JavaScript:
Document document = Jsoup.connect(
"https://example.com"
).get();
Bu kod belirtilen URL'ye gider ve sayfanın HTML içeriğini alır. Artık elimizde işleyebileceğimiz bir Document nesnesi vardır.
Sayfa Başlığını Çekmek
Bağlantı kurduktan sonra basit bir örnek yapalım.
JavaScript:
System.out.println(document.title());
Bu satır sayfanın <title> etiketindeki değeri ekrana yazdırır.
Küçük gibi görünse de aslında scraping işleminin ilk adımı budur.
HTML Elemanlarını Seçmek
Gerçek hayatta genellikle başlık, fiyat veya açıklama gibi belirli alanlara ihtiyaç duyarız.Örneğin tüm haber başlıklarını çekmek istediğimizi düşünelim.
JavaScript:
Elements headlines = document.select("h2");
Ardından:
JavaScript:
for (Element headline : headlines) {
System.out.println(headline.text());
}
Bu kadar.
Sayfadaki tüm H2 etiketleri ekrana basılacaktır.
İlk kez kullanan birçok geliştirici bu noktada Jsoup'un ne kadar sade olduğunu fark ediyor.
En Çok Kullanılan CSS Seçicileri
Web scraping yaparken aşağıdaki seçiciler sık kullanılır.
Seçici | Açıklama |
|---|---|
| div | Tüm div etiketleri |
| .urun | Belirli class |
| #fiyat | Belirli id |
| a | Linkler |
| img | Görseller |
| table tr | Tablo satırları |
Örnek:
JavaScript:
document.select(".product-price");
Bu ifade "product-price" sınıfına sahip tüm elemanları getirir.
Linkleri Çekmek
Bir sayfadaki bağlantıları almak da oldukça yaygın bir işlemdir.
JavaScript:
Elements links = document.select("a[href]");
Sonrasında:
JavaScript:
for (Element link : links) {
System.out.println(link.attr("href"));
}
Bu yöntem özellikle crawler geliştirenlerin sık kullandığı bir yaklaşımdır.
Jsoup ile Veri Çekmenin Avantajları
Birçok projede Selenium yerine doğrudan Jsoup tercih edilmesinin sebepleri vardır.Kriter | Jsoup | Selenium |
|---|---|---|
| Hız | Yüksek | Daha yavaş |
| Tarayıcı gereksinimi | Yok | Var |
| Kurulum | Kolay | Daha karmaşık |
| JavaScript desteği | Yok | Var |
| Kaynak tüketimi | Düşük | Yüksek |
Eğer hedef sayfa verileri doğrudan HTML içinde sunuyorsa Jsoup çoğu zaman yeterlidir.
Dikkat Edilmesi Gereken Noktalar
Web scraping yaparken her site aynı şekilde çalışmaz.Bazı siteler:
- Bot koruması kullanır
- IP sınırlaması uygular
- CAPTCHA gösterir
- JavaScript ile içerik yükler
Böyle durumlarda yalnızca Jsoup yeterli olmayabilir.
Özellikle React, Vue veya Angular kullanan modern uygulamalarda veriler sonradan yüklendiği için Selenium veya Playwright gibi çözümler gerekebilir.
Hangi Durumlarda Jsoup Yeterlidir?
Aşağıdaki senaryolarda Jsoup oldukça başarılıdır:
Ancak içerik tamamen JavaScript ile oluşturuluyorsa farklı araçlara yönelmek gerekebilir.
Sevgili kodlamaya gönülvermiş THS Ailesi ;
Web scraping denildiğinde Java dünyasında akla gelen ilk kütüphanelerden biri hâlâ Jsoup.Bunun nedeni yalnızca hızlı olması değil, aynı zamanda öğrenme sürecini gereksiz yere karmaşıklaştırmaması.
Birkaç satır kodla sayfa içeriğini okuyabilmek ve istediğin veriyi çekebilmek özellikle yeni başlayanlar için büyük avantaj sağlıyor.
Eğer Java ile veri toplama, fiyat takibi, içerik analizi veya otomasyon projeleri geliştirmeyi düşünüyorsan,
Jsoup öğrenmek harcanan zamana fazlasıyla değen araçlardan biri olacaktır.
Bir dahaki makalemizde görüşene dek mavi ekransız bugsuz ve sorunsuz sistemlerle çalışmanız dileği ile hoşça kalın
Son düzenleme:



