Mövzunu Açan
#0
Cheerio, Node.js üzerinde çalışan bir kütüphane olarak, sunucu tarafında HTML belgelerini işlemek için sıklıkla kullanılmaktadır. Ancak, DOM yüklenme süresi ve element bulma sorunları, geliştiricilerin karşılaştığı yaygın problemler arasında yer alır. Bu yazıda, Cheerio kullanarak stok takip sistemi oluştururken yaşanabilecek bu sorunların kesin çözümlerini ele alacağız.
İlk olarak, Cheerio’nun çalışma şekline bakalım. Cheerio, jQuery benzeri bir API sunarak HTML belgeleri üzerinde sorgulama yapmamıza olanak tanır. Ancak, bu kütüphane yalnızca statik HTML ile çalışır. Yani, dinamik olarak yüklenen içeriklere erişmek mümkün değildir. Eğer bir web sayfası, JavaScript kullanarak içeriklerini yüklüyorsa, Cheerio bu içerikleri görüntüleyemez. Bu nedenle, sayfanın tam olarak yüklenmesini beklemek için bir çözüm geliştirmek gerekmektedir.
Bu tür durumlarda, puppeteer gibi bir tarayıcı otomasyonu kütüphanesi kullanmak faydalı olabilir. Puppeteer, sayfanın tamamen yüklenmesini bekleyerek dinamik içeriklerin de alınmasını sağlar. Aşağıda, Cheerio ve Puppeteer kullanarak bir örnek verilmektedir:
Yukarıdaki kod, Puppeteer ile belirtilen sayfayı yükler ve gerekli içerikleri Cheerio ile işleyerek bir ürün listesi oluşturur.
Sonuç olarak, Cheerio ile çalışırken DOM yüklenme süresine dikkat etmek ve dinamik içeriklere erişmek için Puppeteer gibi kütüphaneleri kullanmak, element bulamama sorunlarını aşmanın en etkili yoludur. Bu yöntemlerle, stok takip sisteminizin güvenilir bir şekilde verileri almasını sağlayabilirsiniz.
İlk olarak, Cheerio’nun çalışma şekline bakalım. Cheerio, jQuery benzeri bir API sunarak HTML belgeleri üzerinde sorgulama yapmamıza olanak tanır. Ancak, bu kütüphane yalnızca statik HTML ile çalışır. Yani, dinamik olarak yüklenen içeriklere erişmek mümkün değildir. Eğer bir web sayfası, JavaScript kullanarak içeriklerini yüklüyorsa, Cheerio bu içerikleri görüntüleyemez. Bu nedenle, sayfanın tam olarak yüklenmesini beklemek için bir çözüm geliştirmek gerekmektedir.
Bu tür durumlarda, puppeteer gibi bir tarayıcı otomasyonu kütüphanesi kullanmak faydalı olabilir. Puppeteer, sayfanın tamamen yüklenmesini bekleyerek dinamik içeriklerin de alınmasını sağlar. Aşağıda, Cheerio ve Puppeteer kullanarak bir örnek verilmektedir:
CODE
1234567891011121314151617181920212223
const puppeteer = require('puppeteer');
const cheerio = require('cheerio');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com', { waitUntil: 'networkidle2' });
const content = await page.content();
const $ = cheerio.load(content);
const productList = [];
$('.product').each((index, element) => {
productList.push({
name: $(element).find('.product-name').text(),
price: $(element).find('.product-price').text(),
});
});
console.log(productList);
await browser.close();
})();
Yukarıdaki kod, Puppeteer ile belirtilen sayfayı yükler ve gerekli içerikleri Cheerio ile işleyerek bir ürün listesi oluşturur.
waitUntil: 'networkidle2' parametresi, sayfanın tüm dinamik içeriklerinin yüklenmesini bekler, bu sayede Cheerio ile doğru verilere ulaşılır.Sonuç olarak, Cheerio ile çalışırken DOM yüklenme süresine dikkat etmek ve dinamik içeriklere erişmek için Puppeteer gibi kütüphaneleri kullanmak, element bulamama sorunlarını aşmanın en etkili yoludur. Bu yöntemlerle, stok takip sisteminizin güvenilir bir şekilde verileri almasını sağlayabilirsiniz.