Node.js ve Puppeteer kullanarak farklı sitelerden veri çekmek için aşağıdaki kod örneklerini kullanabilirsiniz:
İlk olarak, Puppeteer'ı kurmak için aşağıdaki komutu kullanabilirsiniz:
npm install puppeteer
Ardından, veri çekmek istediğiniz web sitelerine göre Puppeteer'ı kullanarak kodlar yazabilirsiniz.
Örneğin, https://www.nike.com/ adresindeki ürünlerin fiyatlarını almak için aşağıdaki kodu kullanabilirsiniz:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.nike.com/');
await page.type('#TypeaheadSearchInput', 'shoes'); // arama kutusuna 'shoes' yazın
await page.keyboard.press('Enter'); // Enter tuşuna basın
await page.waitForSelector('.product-card__price'); // fiyatlar yüklenene kadar bekleyin
const prices = await page.evaluate(() => {
const priceElements = Array.from(document.querySelectorAll('.product-card__price'));
return priceElements.map(priceElement => priceElement.textContent);
});
console.log(prices);
await browser.close();
})();
Bu kodda, öncelikle Puppeteer'ı başlatıyoruz ve Nike web sitesine gidiyoruz. Daha sonra, arama kutusuna 'shoes' yazıp Enter tuşuna basarak arama sonuçlarını yüklüyoruz. Son olarak, fiyatları almak için .product-card__price
sınıfına sahip tüm öğeleri seçiyoruz ve fiyatlarını bir dizi olarak döndürüyoruz.
Benzer şekilde, https://www.amazon.com/ adresindeki ürünlerin fiyatlarını almak için aşağıdaki kodu kullanabilirsiniz:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.amazon.com/');
await page.type('#twotabsearchtextbox', 'laptop'); // arama kutusuna 'laptop' yazın
await page.keyboard.press('Enter'); // Enter tuşuna basın
await page.waitForSelector('.s-result-item .a-price-whole'); // fiyatlar yüklenene kadar bekleyin
const prices = await page.evaluate(() => {
const priceElements = Array.from(document.querySelectorAll('.s-result-item .a-price-whole'));
return priceElements.map(priceElement => priceElement.textContent);
});
console.log(prices);
await browser.close();
})();
Bu kodda da, öncelikle Puppeteer'ı başlatıyoruz ve Amazon web sitesine gidiyoruz. Daha sonra, arama kutusuna 'laptop' yazıp Enter tuşuna basarak arama sonuçlarını yüklüyoruz. Son olarak, fiyatları almak için .s-result-item .a-price-whole
sınıfına sahip tüm öğeleri seçiyoruz ve fiyatlarını bir dizi olarak döndürüyoruz.
Bu örneklerde, Puppeteer'ı kullanarak farklı sitelerden veri çekmek için birkaç tane daha örnek verebilirim.
Örneğin, https://www.imdb.com/ adresindeki en popüler filmlerin isimlerini almak için aşağıdaki kodu kullanabilirsiniz:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.imdb.com/');
await page.click('#imdbHeader-navDrawerOpen--desktop'); // navigasyon menüsünü açın
await page.click('#imdbHeader-navDrawer > div > div:nth-child(2) > div:nth-child(2) > a'); // En Popülerler sayfasına gi
await page.waitForSelector('.titleColumn'); // filmler yüklenene kadar bekleyin
const movieTitles = await page.evaluate(() => {
const titleElements = Array.from(document.querySelectorAll('.titleColumn a'));
return titleElements.map(titleElement => titleElement.textContent.trim());
});
console.log(movieTitles);
await browser.close();
})();
Bu kodda, öncelikle Puppeteer'ı başlatıyoruz ve IMDb web sitesine gidiyoruz. Daha sonra, navigasyon menüsünü açarak En Popülerler sayfasına gidiyoruz. Son olarak, .titleColumn
sınıfına sahip tüm öğeleri seçiyoruz ve filmlerin başlıklarını bir dizi olarak döndürüyoruz.
Başka bir örnek olarak, https://www.airbnb.com/ adresindeki New York'taki en popüler konaklama yerlerinin adlarını almak için aşağıdaki kodu kullanabilirsiniz:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.airbnb.com/');
await page.type('input[data-testid="structured-search-input-field-location"]', 'New York'); // arama kutusuna 'New York' yazın
await page.keyboard.press('Enter'); // Enter tuşuna basın
await page.waitForSelector('.k7lz35f6'); // konaklama yerleri yüklenene kadar bekleyin
const placeNames = await page.evaluate(() => {
const nameElements = Array.from(document.querySelectorAll('.k7lz35f6 a'));
return nameElements.map(nameElement => nameElement.textContent.trim());
});
console.log(placeNames);
await browser.close();
})();
Bu kodda da, öncelikle Puppeteer'ı başlatıyoruz ve Airbnb web sitesine gidiyoruz. Daha sonra, arama kutusuna 'New York' yazıp Enter tuşuna basarak konaklama yerlerinin sonuçlarını yüklüyoruz. Son olarak, .k7lz35f6 sınıfına sahip tüm öğeleri seçiyoruz ve konaklama yerlerinin adlarını bir dizi olarak döndürüyoruz.
Bu örneklerde, Puppeteer'ı kullanarak farklı web sitelerinden veri çekebileceğinizi gösterdim. Ancak, her web sitesi farklı HTML yapısına ve CSS sınıflarına sahip olabilir, bu nedenle her bir web sitesi için özel olarak kod yazmanız gerekebilir. Ayrıca, web sitelerinin botlara karşı korunma önlemleri alması da mümkündür. Bu önlemler arasında CAPTCHA doğrulaması, botların engellenmesi veya IP adreslerinin engellenmesi gibi şeyler bulunabilir.