Mövzunu Açan
#0
Cheerio, Node.js üzerinde çalışan ve jQuery benzeri bir API sunan bir kütüphanedir. Web sayfalarındaki HTML içeriği ile etkileşimde bulunmak için sıklıkla kullanılır. Ancak, dinamik olarak yüklenen içeriklerle çalışırken, Cheerio'nun bazı sınırlamaları ile karşılaşabilirsiniz. Bu yazıda, Cheerio ile görsel indirme ve işleme esnasında dinamik sayfa yüklenme gecikmelerini aşmak için etkili yöntemler üzerinde duracağız.
İlk adım olarak, dinamik içeriklerin yüklenmesi için bir tarayıcı simülasyonu yapmamız gerekiyor. Bunun için Puppeteer veya Playwright gibi kütüphaneler kullanabiliriz. Bu kütüphaneler, sayfanın tam olarak yüklenmesini bekleyerek dinamik içeriklerin alınmasını sağlar. Örneğin, Puppeteer kullanarak bir sayfanın yüklenmesini beklemek için aşağıdaki kodu kullanabilirsiniz:
Bu kodda
Bu işlev, belirtilen URL'den görseli indirip verilen dosya yoluna kaydeder. Dinamik sayfa yüklenmesi ve görsel indirme konusunda bu yöntemler, Cheerio kullanımınızı büyük ölçüde kolaylaştıracaktır.
Sonuç olarak, Cheerio ile birlikte Puppeteer veya Playwright kullanmak, dinamik içeriklerle çalışırken karşılaşabileceğiniz gecikmeleri ortadan kaldırarak sürecinizi hızlandırır. Bu yöntemler sayesinde görselleri etkili bir şekilde indirebilir ve işleyebilirsiniz.
İlk adım olarak, dinamik içeriklerin yüklenmesi için bir tarayıcı simülasyonu yapmamız gerekiyor. Bunun için Puppeteer veya Playwright gibi kütüphaneler kullanabiliriz. Bu kütüphaneler, sayfanın tam olarak yüklenmesini bekleyerek dinamik içeriklerin alınmasını sağlar. Örneğin, Puppeteer kullanarak bir sayfanın yüklenmesini beklemek için aşağıdaki kodu kullanabilirsiniz:
CODE
12345678910111213141516171819const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://ornek-sayfa.com', { waitUntil: 'networkidle2' });
const content = await page.content(); // Sayfanın HTML içeriğini al
// Cheerio ile içeriği işleyebilirsiniz
const $ = cheerio.load(content);
// Görselleri indirme ve işleme
$('img').each((i, img) => {
const imgUrl = $(img).attr('src');
// İndirme işlemi burada yapılabilir
});
await browser.close();
})();Bu kodda
networkidle2 parametresi, sayfanın tüm kaynakları yüklendikten sonra devam etmemizi sağlar. Bu, dinamik içerikler için kritik bir adımdır. Şimdi, görsellerin indirilmesi ve işlenmesi konusuna gelecek olursak, axios gibi bir kütüphane kullanarak görselleri kolayca indirebiliriz. Örnek bir indirme işlemi:CODE
12345678910const axios = require('axios');
const fs = require('fs');
async function downloadImage(url, filepath) {
const response = await axios({
url,
responseType: 'stream',
});
response.data.pipe(fs.createWriteStream(filepath));
}Bu işlev, belirtilen URL'den görseli indirip verilen dosya yoluna kaydeder. Dinamik sayfa yüklenmesi ve görsel indirme konusunda bu yöntemler, Cheerio kullanımınızı büyük ölçüde kolaylaştıracaktır.
Sonuç olarak, Cheerio ile birlikte Puppeteer veya Playwright kullanmak, dinamik içeriklerle çalışırken karşılaşabileceğiniz gecikmeleri ortadan kaldırarak sürecinizi hızlandırır. Bu yöntemler sayesinde görselleri etkili bir şekilde indirebilir ve işleyebilirsiniz.