Thread Starter
#0
Web scraping, günümüz dijital dünyasında önemli bir yer tutmaktadır. Belirli aralıklarla veri çekilmesi gereken durumlar için cron job'lar (zamanlanmış görevler) kullanarak otomatikleştirilmiş sistemler oluşturmak oldukça verimlidir. Bu yazıda, Cheerio kütüphanesi ile birlikte RabbitMQ veya Bull gibi kuyruk mimarilerinin nasıl kullanılacağını inceleyeceğiz.
Cheerio, jQuery benzeri bir API sunarak HTML içeriğini kolayca analiz etmemizi sağlar. Örneğin, bir web sayfasından veri çekmek istiyorsanız, ilk olarak sayfanın HTML içeriğini elde etmeniz gerekecektir. Bunu yapmanın en yaygın yolu,
Bu fonksiyon, verilen URL'den başlık bilgisini çekmektedir. Ancak sürekli olarak veri çekmek için bu işlemi cron job ile zamanlamak gerekmektedir. İşte burada RabbitMQ veya Bull devreye giriyor.
RabbitMQ, mesaj tabanlı bir sistem sunarak, arka planda çalışan görevlerin yönetimini kolaylaştırır. Örneğin, bir veri çekme isteği geldiğinde, bu isteği RabbitMQ kuyruğuna ekleyebiliriz. Daha sonra, arka planda çalışan bir işçi (worker) bu isteği alıp Cheerio ile veriyi çekebilir.
Bull ise, Node.js tabanlı bir kuyruk yönetim kütüphanesidir ve işleri kolayca planlamayı sağlar. Aşağıda Bull kullanarak bir örnek verilmiştir:
Bu yapı ile her saat başı belirttiğimiz URL'den veri çekilmiş olur. Hem RabbitMQ hem de Bull, ölçeklenebilir ve hatalara dayanıklı sistemler kurmamıza yardımcı olur.
Sonuç olarak, Cheerio ile web scraping işlemlerini cron job'lar aracılığıyla zamanlayarak, RabbitMQ veya Bull gibi kuyruk sistemleri ile verimli bir mimari oluşturmak mümkündür. Bu yaklaşım, yüksek veri hacimlerini yönetirken sistemin performansını artırmak için idealdir.
Cheerio, jQuery benzeri bir API sunarak HTML içeriğini kolayca analiz etmemizi sağlar. Örneğin, bir web sayfasından veri çekmek istiyorsanız, ilk olarak sayfanın HTML içeriğini elde etmeniz gerekecektir. Bunu yapmanın en yaygın yolu,
axios veya request gibi HTTP istemcileri kullanmaktır. Aşağıda basit bir örnek verilmiştir:CODE
12345678910
const axios = require('axios');
const cheerio = require('cheerio');
async function fetchData(url) {
const { data } = await axios.get(url);
const $ = cheerio.load(data);
const title = $('title').text();
return title;
}
Bu fonksiyon, verilen URL'den başlık bilgisini çekmektedir. Ancak sürekli olarak veri çekmek için bu işlemi cron job ile zamanlamak gerekmektedir. İşte burada RabbitMQ veya Bull devreye giriyor.
RabbitMQ, mesaj tabanlı bir sistem sunarak, arka planda çalışan görevlerin yönetimini kolaylaştırır. Örneğin, bir veri çekme isteği geldiğinde, bu isteği RabbitMQ kuyruğuna ekleyebiliriz. Daha sonra, arka planda çalışan bir işçi (worker) bu isteği alıp Cheerio ile veriyi çekebilir.
Bull ise, Node.js tabanlı bir kuyruk yönetim kütüphanesidir ve işleri kolayca planlamayı sağlar. Aşağıda Bull kullanarak bir örnek verilmiştir:
CODE
1234567891011
const Queue = require('bull');
const fetchQueue = new Queue('fetch');
fetchQueue.process(async (job) => {
const result = await fetchData(job.data.url);
console.log(result);
});
// Cron job ile veri çekme
fetchQueue.add({ url: 'https://example.com' }, { repeat: { cron: '0 * * * *' } });
Bu yapı ile her saat başı belirttiğimiz URL'den veri çekilmiş olur. Hem RabbitMQ hem de Bull, ölçeklenebilir ve hatalara dayanıklı sistemler kurmamıza yardımcı olur.
Sonuç olarak, Cheerio ile web scraping işlemlerini cron job'lar aracılığıyla zamanlayarak, RabbitMQ veya Bull gibi kuyruk sistemleri ile verimli bir mimari oluşturmak mümkündür. Bu yaklaşım, yüksek veri hacimlerini yönetirken sistemin performansını artırmak için idealdir.