Eğer kaydırdıkça içerik yükleyen, fiyatları giriş duvarının arkasına saklayan ya da neredeyse her hafta yerleşimini değiştiren bir siteden veri çekmeye çalıştıysan, bunun ne kadar zor olduğunu bilirsin. Statik scraper’lar artık yetmiyor. Hatta ABD’deki yatırım danışmanlarının %67’sinden fazlası alternatif veri için web scraping’e güveniyor ve ABD’deki perakendecilerin %81’i rakip fiyat takibini otomatikleştiriyor. Ama asıl mesele şu: Bu verilerin büyük kısmı, JavaScript ile yüklenen ve kullanıcı etkileşimlerinin arkasına saklanan dinamik sitelerde duruyor. İşte bu noktada headless browser otomasyonu — ve Puppeteer gibi araçlar — devreye giriyor.
Otomasyon ve yapay zekâ araçları geliştirmekle yıllarını geçirmiş biri olarak (evet, satış ve operasyon ekipleri için epey site de kazıdım), Puppeteer’ın geleneksel scraper’ların kaçırdığı verileri nasıl ortaya çıkarabildiğini bizzat gördüm. Ama kod yazma yükünün iş kullanıcıları için çoğu zaman caydırıcı olabildiğini de gördüm. Bu yüzden bu rehberde, Puppeteer scraper’ın tam olarak ne olduğunu, web scraping için nasıl kullanılacağını ve ne zaman ondan bile daha basit bir şeye — örneğin tarayıcıda çalışan, yapay zekâ destekli ve kod gerektirmeyen web scraper’ımız Thunderbit’e — yönelmenin daha doğru olabileceğini anlatacağım.
Puppeteer Scraper Nedir? Hızlı Bir Bakış
Önce temelden başlayalım. Puppeteer, Google tarafından sunulan açık kaynaklı bir Node.js kütüphanesidir ve JavaScript kullanarak headless bir Chrome ya da Chromium tarayıcısını kontrol etmeni sağlar. Kısaca: ekranda hiçbir şey göstermeden web sayfalarını açabilen, butonlara tıklayabilen, formları doldurabilen, sayfayı kaydırabilen ve en önemlisi veri çekebilen bir robotun olması gibidir.
Puppeteer’ı özel yapan nedir?
- Dinamik içeriği render edebilir — yani gerçek bir kullanıcı gibi JavaScript’in yüklenmesini bekler.
- Kullanıcı eylemlerini taklit edebilir: tıklama, yazma, kaydırma ve hatta açılır pencereleri yönetme.
- Verinin yalnızca etkileşimden sonra göründüğü siteleri kazımak için idealdir; örneğin e-ticaret listelemeleri, sosyal akışlar veya paneller.
Diğer araçlarla karşılaştırınca nasıl?
- Selenium: Tarayıcı otomasyonunun klasiklerinden. Birçok tarayıcı ve dil ile çalışır, ama daha ağırdır ve biraz daha eski usuldür. Çapraz tarayıcı testleri için harikadır; buna karşılık Puppeteer, Chrome/Node.js projelerinde daha çeviktir.
- Thunderbit: İşte burada heyecanlanıyorum. Thunderbit, tarayıcı içinde çalışan, kod gerektirmeyen ve yapay zekâ destekli bir web scraper’dır. Script yazmak yerine sadece “AI Suggest Fields”a tıklarsın ve yapay zekâ neyi çıkaracağını kendi belirler. Kod yazmadan sonuç almak isteyen iş kullanıcıları için biçilmiş kaftandır (birazdan daha fazla anlatacağım).
Kısacası: Puppeteer = maksimum kontrol (eğer kod yazıyorsan). Thunderbit = maksimum kolaylık (eğer kod yazmak istemiyorsan).
Puppeteer Web Scraping Neden İş Kullanıcıları İçin Önemli?
Veri Kazıma Nedir ve 2026'da Nasıl Yapılır? Get Started Free
Dürüst olalım: web scraping artık sadece hacker’lar ya da veri bilimcileri için değil. Satış, operasyon, pazarlama ve hatta gayrimenkul ekipleri iş verisini kullanarak öne geçiyor. Ve bu kadar çok kritik iş bilgisi dinamik sitelerin arkasına kilitlenmişken, Puppeteer çoğu zaman bu veriye ulaşmanın anahtarı oluyor.
İşte gerçek dünyadan bazı kullanım senaryoları:
| Kullanım Senaryosu | Kimler Fayda Sağlar | Etkisi / ROI |
|---|---|---|
| Lead üretimi | Satış, İş Geliştirme | Potansiyel müşteri listesi oluşturmayı otomatikleştirir; temsilci başına haftada 8+ saat tasarruf sağlar (vaka çalışması) |
| Fiyat takibi | E-ticaret, Ürün Operasyonları | Rakipleri gerçek zamanlı takip eder; bir kurumsal şirket yılda 3,8 milyon $ tasarruf etti (kaynak) |
| Pazar araştırması | Pazarlama, Strateji, Finans | Yatırım danışmanlarının %67’si web’den kazınmış verileri kullanıyor; bazı durumlarda %890’a kadar ROI elde ediliyor (kaynak) |
| Gayrimenkul veri toplama | Emlakçılar, Analistler | 50’den fazla ilan sayfasını saatler yerine dakikalar içinde kazır (kaynak) |
| Uyum takibi | Operasyon, Hukuk | İzlemeyi otomatikleştirir; bir sigorta şirketi 50 milyon $ ceza ödemekten kurtuldu (kaynak) |
Ve şunu da unutmayalım: çalışanların %40’ından fazlası haftalarının dörtte birini veri toplama gibi tekrarlayan işlere harcıyor. Bunu web scraping ile otomatikleştirmek sadece güzel bir ek özellik değil — rekabet avantajı.
Başlarken: Puppeteer Scraper’ını Kurmak
Kolları sıvamaya hazır mısın? İşte Puppeteer’ı 10 dakikadan kısa sürede çalıştırmanın yolu (biraz JavaScript’e rahatsan):
1. Node.js’i yükle
Puppeteer, Node.js üzerinde çalışır. En güncel LTS sürümünü nodejs.org adresinden indir.
2. Yeni bir proje klasörü oluştur
Terminalini aç ve şunları çalıştır:
mkdir puppeteer-scraper-demo
cd puppeteer-scraper-demo
npm init -y
3. Puppeteer’ı yükle
npm install puppeteer
Bu işlem, uyumlu bir Chromium sürümünü de indirir (yaklaşık 100 MB).
4. İlk script’ini oluştur
scrape.js adında bir dosya oluştur:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com', { waitUntil: 'domcontentloaded' });
const title = await page.title();
console.log('Sayfa başlığı:', title);
await browser.close();
})();
Bunu şu komutla çalıştır:
node scrape.js
Eğer “Sayfa başlığı: Example Domain” görürsen, tebrikler — Chrome’u otomatikleştirdin!
İlk Puppeteer Web Scraping Script’ini Oluşturma
Hadi işi pratiğe dökelim. Diyelim ki quotes.toscrape.com sitesinden alıntıları çekmek istiyorsun (scraper’lar için hazırlanmış bir demo site).
1. Adım: Sayfaya git
await page.goto('http://quotes.toscrape.com', { waitUntil: 'networkidle0' });
2. Adım: Veriyi çıkar
const quotes = await page.evaluate(() => {
return Array.from(document.querySelectorAll('.quote')).map(node => ({
text: node.querySelector('.text')?.innerText.trim(),
author: node.querySelector('.author')?.innerText.trim(),
tags: Array.from(node.querySelectorAll('.tag')).map(tag => tag.innerText.trim())
}));
});
console.log(quotes);
3. Adım: Sayfalama işlemini yönet
let hasNext = true;
let allQuotes = [];
while (hasNext) {
// Yukarıdaki gibi alıntıları çıkar
const quotes = await page.evaluate(/* ... */);
allQuotes.push(...quotes);
const nextButton = await page.$('li.next > a');
if (nextButton) {
await Promise.all([
page.click('li.next > a'),
page.waitForNavigation({ waitUntil: 'networkidle0' })
]);
} else {
hasNext = false;
}
}
4. Adım: JSON’a kaydet
const fs = require('fs');
fs.writeFileSync('quotes.json', JSON.stringify(allQuotes, null, 2));
Ve işte bu kadar — gezinen, veri çıkaran, sayfalayan ve kaydeden temel bir Puppeteer scraper’ı hazır.
Gelişmiş Puppeteer Scraper Teknikleri: Dinamik İçerik ile Başa Çıkma
Gerçek dünyadaki sitelerin çoğu, statik bir liste kadar basit değildir. Zor kısımları aşmak için şunları yapabilirsin:
1. Dinamik öğeleri beklemek
await page.waitForSelector('.product-list-item');
Bu, çekmek istediğin içeriğin gerçekten yüklenmesini sağlar.
2. Kullanıcı eylemlerini taklit etmek
- Bir butona tıkla:
await page.click('#load-more'); - Bir alana yaz:
await page.type('#search', 'laptop'); - Sonsuz kaydırma için sayfayı kaydır:
// Not: page.waitForTimeout, Puppeteer v22’de kaldırıldı. Bunun yerine düz bir promise kullan. const sleep = (ms) => new Promise(r => setTimeout(r, ms)); let previousHeight = await page.evaluate('document.body.scrollHeight'); while (true) { await page.evaluate('window.scrollTo(0, document.body.scrollHeight)'); await sleep(1500); const newHeight = await page.evaluate('document.body.scrollHeight'); if (newHeight === previousHeight) break; previousHeight = newHeight; }
**3. Giriş işlemlerini yönetmek**
```javascript
await page.goto('https://exampleshop.com/login');
await page.type('#login-username', 'myusername');
await page.type('#login-password', 'mypassword');
await page.click('#login-button');
await page.waitForNavigation({ waitUntil: 'networkidle0' });
4. AJAX ile yüklenen verilerle uğraşmak Bazen veri DOM’un içinde olmaz; bunun yerine bir API çağrısından gelir. Ağ yanıtlarını şöyle yakalayabilirsin:
page.on('response', async response => {
if (response.url().includes('/api/products')) {
const data = await response.json();
// Veriyi işle
}
});
Gerçek Dünya Örneği: Bir E-ticaret Sitesinden Ürün Verisi Kazımak
Şimdi her şeyi bir araya getirelim. Giriş yaptıktan sonra bir (demo) e-ticaret sitesinden ürün adlarını, fiyatları ve görselleri çekmek istediğini düşün.
const puppeteer = require('puppeteer');
const fs = require('fs');
(async () => {
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
// 1. Adım: Giriş yap
await page.goto('https://exampleshop.com/login');
await page.type('#login-username', 'myusername');
await page.type('#login-password', 'mypassword');
await page.click('#login-button');
await page.waitForNavigation({ waitUntil: 'networkidle0' });
// 2. Adım: Kategori sayfasına git
await page.goto('https://exampleshop.com/category/laptops', { waitUntil: 'networkidle0' });
// 3. Adım: Ürünleri çıkar
const products = await page.evaluate(() => {
return Array.from(document.querySelectorAll('.product-item')).map(item => ({
name: item.querySelector('.product-title')?.innerText.trim() || '',
price: item.querySelector('.product-price')?.innerText.trim() || '',
image: item.querySelector('img.product-image')?.src || ''
}));
});
// 4. Adım: JSON’a kaydet
fs.writeFileSync('products.json', JSON.stringify(products, null, 2));
await browser.close();
})();
Bu script giriş yapar, gezinir, kazır ve kaydeder — hepsi otomatik. Daha gelişmiş ihtiyaçlar için sayfalama döngüleri ekleyebilir, hatta her ürüne girip daha fazla detay da çekebilirsin.
Thunderbit: Puppeteer Scraper’ı Yapay Zekâ ile Daha Basit Hale Getirmek
Thunderbit Chrome Uzantısını Deneyin Yapay zekâ ile herhangi bir web sitesinden 2 tıkta veri çekin. Get Started Free
Şimdi buraya kadar geldiysen ve “Bu harika, ama her yeni veri seti için sürekli kod yazmak istemiyorum” diye düşünüyorsan, yalnız değilsin. Thunderbit’i tam da bu yüzden geliştirdik Thunderbit.
Thunderbit’i farklı kılan nedir?
- Kod gerekmez: Sadece Thunderbit Chrome Uzantısı’nı yükle, kazımak istediğin sayfayı aç ve “AI Suggest Fields”a tıkla.
- Yapay zekâ destekli alan algılama: Thunderbit sayfayı okur ve çıkarılacak en iyi sütunları önerir — örneğin “Product Name”, “Price”, “Image” gibi.
- Dinamik içeriği yönetir: Sonsuz kaydırma, açılır pencereler ve alt sayfalar mı var? Thunderbit’in yapay zekâsı bunları yönetebilir; sayfalama üzerinden ilerler ya da verini zenginleştirmek için her ürünün detay sayfasını bile ziyaret eder.
- Anında dışa aktarma: Verini tek tıkla doğrudan Excel, Google Sheets, Notion veya Airtable’a gönder. Dışa aktarma için ekstra ücret yok.
- Popüler siteler için şablonlar: Amazon, Zillow ya da LinkedIn mi kazıman gerekiyor? Thunderbit’in anında hazır şablonları var — kurulum gerekmez.
- Bulut ya da tarayıcı scraping: Büyük işler için Thunderbit, bulutta aynı anda 50 sayfaya kadar kazıma yapabilir.
Kullanıcıların “Keşke bu veriyi alabilsem” noktasından “İşte tablom” noktasına beş dakikadan kısa sürede geçtiğini gördüm. En güzel kısmı mı? Site değiştiğinde script’lerin bozulması konusunda artık endişelenmene gerek yok — Thunderbit’in yapay zekâsı değişikliklere anında uyum sağlar.
Thunderbit AI Web Scraper'ı Ücretsiz Deneyin
Puppeteer mı Thunderbit mi: Doğru Web Scraping Aracını Seçmek
Peki hangisini kullanmalısın? Ekipler için bunu şöyle ayırıyorum:
| Kriter | Puppeteer (Kodlu) | Thunderbit (Kodsuz, Yapay Zekâlı) |
|---|---|---|
| Kullanım Kolaylığı | JavaScript ve DOM bilgisi gerektirir | Tıkla-seç tarzı kullanım, alanları yapay zekâ önerir |
| Kurulum Hızı | Karmaşık işler için saatler ile günler arası | Dakikalar — kur ve başla |
| Kontrol / Esneklik | En yüksek: her türlü özel mantığı yazabilir, diğer kodlarla entegre edebilirsin | Standart durumlarda güçlüdür; aşırı özelleştirilmiş iş akışları için daha az uygundur |
| Dinamik İçerik | Bekleme, tıklama, kaydırma için manuel script yazımı | Yerleşik yapay zekâ dinamik içerik, sayfalama ve alt sayfaları otomatik yönetir |
| Bakım | Script’ler sana aittir — site değişince güncellemen gerekir | Yapay zekâ yerleşim değişikliklerine uyum sağlar; kullanıcı için daha az bakım gerekir |
| Veri Dışa Aktarma | Kendi dışa aktarma mantığını yazarsın | Excel, Sheets, Notion, Airtable, CSV, JSON’a tek tıkla dışa aktarma |
| En Uygun Olduğu Alan | Geliştiriciler, çok özelleştirilmiş veya büyük ölçekli kazıma işleri | İş kullanıcıları, hızlı teslimat gerektiren projeler, teknik olmayan ekipler |
| Maliyet | Ücretsiz (zamanın ve varsa altyapı maliyetlerin hariç) | Ücretsiz katman mevcut; kullanım kredilerine dayalı ücretli planlar (Thunderbit Fiyatlandırma) |
Özetle:
- Puppeteer kullan eğer tam kontrol istiyorsan, kodlama kaynakların varsa ya da scraping’i daha büyük bir uygulamaya entegre etmen gerekiyorsa.
- Thunderbit kullan eğer hızlı sonuç istiyorsan, kod yazmak istemiyorsan ya da teknik olmayan ekip arkadaşlarını güçlendirmek istiyorsan.
Açıkçası, ekiplerin ikisini birden kullandığını da gördüm: hızlı kazanımlar ve prototipleme için Thunderbit, derin entegrasyonlar ya da uç senaryolar için Puppeteer.
Adım Adım Kontrol Listesi: Başarılı Bir Puppeteer Web Scraping Projesi Yürütmek
İşte sorunsuz bir Puppeteer scraping projesi için benim kullandığım kontrol listesi:
- Hedefini tanımla: Hangi verilere ihtiyacın var? Nerede bulunuyor?
- Siteyi analiz et: Dinamik mi? Giriş gerekiyor mu? Anti-bot önlemleri var mı?
- Ortamını kur: Node.js, Puppeteer ve yardımcı kütüphaneler.
- Bir ön çalışma yap: Tek sayfayla başla, selector’ları doğru ayarla.
- Dinamik içeriği yönet: Gerekirse
waitForSelectorkullan, tıklama/kaydırma eylemlerini taklit et. - Sayfalama veya döngü ekle: Sadece bir sayfayı değil, tüm sayfaları kazı.
- Engel aşma taktikleri uygula: Bekleme sürelerini rastgeleleştir, gerçek bir User-Agent ayarla, gerekiyorsa proxy kullan.
- Veriyi dışa aktar ve doğrula: JSON/CSV olarak kaydet, eksiksizliğini kontrol et.
- Optimize et ve hataları yönet: try/catch ekle, ilerlemeyi kaydet, eksik verileri zarifçe ele al.
- İzle ve bakım yap: Siteler değişir — script’ini güncellemeye hazır ol.
Sorun giderme ipuçları:
- Selector’lar null döndürüyorsa HTML’i bir daha kontrol et ve beklemeler ekle.
- Engelleniyorsan yavaşla, IP değiştir veya stealth plugin’leri kullan.
- Script’in çöküyorsa bellek sızıntılarını ya da ele alınmamış istisnaları kontrol et.
Sonuç ve Temel Çıkarımlar
Web scraping, veriye dayalı ekipler için artık olmazsa olmaz bir beceri haline geldi. Puppeteer, en dinamik ve JavaScript ağırlıklı sitelerden bile veri çıkarman için güç verir — ama bunun için biraz kod becerisi ve sürekli bakım gerekir. Kodu atlayıp doğrudan veriye ulaşmak isteyen iş kullanıcıları için Thunderbit, hızlı, esnek ve şaşırtıcı derecede sağlam bir yapay zekâ destekli, kod gerektirmeyen alternatif sunar.
Benim önerim şu:
- Tekniksen ve derin özelleştirmeye ihtiyacın varsa, Puppeteer ile başla.
- Hız, sadelik ve daha az bakım istiyorsan, Thunderbit’i dene (ücretsiz Chrome Uzantısı başlamak için harika bir yer).
- Çoğu ekip için ikisinin karışımı, web veri ihtiyaçlarının %99’unu karşılar.
Buna benzer daha fazla rehber görmek ister misin? Eğitimler, karşılaştırmalar ve yapay zekâ destekli web scraping’deki en yeni gelişmeler için Thunderbit Blog’a göz at.
Thunderbit AI Web Scraper'ı Deneyin Get Started Free
SSS
1. Puppeteer scraper nedir ve web scraping için neden kullanılır?
Puppeteer, JavaScript ile headless bir Chrome tarayıcısını kontrol etmeni sağlayan bir Node.js kütüphanesidir. Dinamik içeriği yükleyebildiği, kullanıcı eylemlerini taklit edebildiği ve geleneksel scraper’ların baş edemediği sitelerden veri çıkarabildiği için web scraping’de kullanılır.
2. Puppeteer, Selenium ve Thunderbit ile nasıl karşılaştırılır?
Selenium birden fazla tarayıcı ve dille çalışır, ancak daha hantaldır. Puppeteer, Chrome/Node.js için daha optimize edilmiştir ve birçok scraping işinde daha hızlıdır. Thunderbit ise teknik olmayan kullanıcıların sadece birkaç tıklamayla veri çekmesini sağlayan, kod gerektirmeyen ve yapay zekâ destekli bir araçtır.
3. Puppeteer web scraping’in başlıca iş faydaları nelerdir?
Veri toplamanın otomatikleştirilmesi zaman kazandırır, hataları azaltır ve satış, pazarlama, operasyon ve daha fazlası için gerçek zamanlı içgörüler sağlar. Kullanım alanları lead üretiminden fiyat takibine ve pazar araştırmasına kadar uzanır.
4. Puppeteer ile scraping yaparken en büyük zorluklar nelerdir?
Ana zorluklar dinamik içeriği yönetmek, anti-bot engellerinden kaçınmak ve siteler değiştiğinde script’leri güncel tutmaktır. Beklemeleri yönetmek, etkileşimleri taklit etmek ve hataları ele almak için kod yazman gerekir.
5. Puppeteer yerine ne zaman Thunderbit kullanmalıyım?
Kod yazmak istemiyorsan, hızlı sonuçlara ihtiyacın varsa ya da teknik olmayan ekip arkadaşlarını güçlendirmek istiyorsan Thunderbit kullan. Standart scraping işleri, hızlı teslimat gerektiren projeler veya veriyi en az uğraşla Excel ya da Google Sheets’e aktarmak istediğin durumlar için idealdir.
Daha akıllı bir scraping yöntemi denemeye hazır mısın? Thunderbit’i indir ya da Thunderbit Blog’daki daha fazla rehbere göz at. Keyifli kazımalar!
Daha Fazla Bilgi


