Nodejs Bot Nasıl Yapılır, Nodejs ile Web Scraping Nasıl Yapılır?

İnternette en çok araştırılan konulardan birisi bot yapımı veya bot ile nasıl veri çekilir? desek yanlış olmaz galiba nodejs kullanarak bot yapımını sizler için derledim.

Daha önce Php ile bot nasıl yapılır? konusunu sizler için anlatmıştım. Şimdi ise nodejs yazılım dili ile bot yapımını ele alacağız.

Bot Nedir?

Bot aslında robot'un kısaltması olarak web teknolojisinde yazılım botu olarak tabir edilerek planlanmış programlardır. Bu botlar sayesinde istediğimiz siteye bağlanarak oradaki verileri okuyarak çekebiliriz.

Neden bot(robot)'a ihtiyac duyarız?

Genel anlamda botlar siteler arasında veri paylaşmaya yarayan ve en çokta arama motorlarının endekslemede kullandığı yöntemdir. Ama dijital dünyada bir çok platformda başka siteden veri çekme diye aratıldığını görürüz.

Neden Nodejs ile Bot(robot) Yapılır?

Bot yapımı bir çok yazılım dili ile kullanılabilir. En yaygın olanı php'dir. Php yazılımında curl ve file get contents ile yapımları mevcuttur. Fakat php senkron bir yazılım ve anlık veri akışı sağlanması çok zor yapılsa bile sunucuyu yorar. Javascript ise asenkron bir dil olarak anlık realtime sunucu yormadan çok hızlı sonuçlar elde edebildiğimiz bir dildir.

İşte tam bu noktada Nodejs devreye giriyor. Nodejs ile anlık realtime ve hızlı veri işleyişleri elde edebiliriz. Ya bu anlık realtime da ne der gibisiniz.

Canlı maç sonuçları, Anlık değişebilen veriler: Borsa, Dolar fiyatları gibi bunun içine bitcoin dünyasıda dahil oldu. İşte bu anlık değişebilen verileri javascript yazılım dili ve freamworkleri ile hızlı yapabiliriz. Bunların başında Nodejs gelir.

Bu kadar anlatım yeter konuya geçelim der gibisiniz. Nodejs ile bot yapımına hazırsanız başlayalım. Nodejs ile bot yapımında bir çok farklı kütüphane mevcut en yaygın olarak kullanılan 2 tanesini sizler için ele aldım.

Nodejs Npm Bot, Web Scramin Paketleri:

  • 1) Cheerio & Request Promise
  • 2) Puppeteer

Cheerio ve request-promise ile nodejs bot yapımı

Cheerio ve request-promise ile nodejs bot yapalım. İlk olarak cheeriobot adında bir klasör oluşturup içine girelim. Sonrasında npm ile gerekli paketlerimizi kuralım. Terminalden kodlarımızı sırası ile yazalım

    mkdir cheeriobot
    cd cheeriobot

    npm init -y
    npm install request
    npm install cheerio
    npm install request-promise
  

Paketleri yükledikten sonra index.js dosyamız içine bot kodlarımızı yazalım.

    const cheerio = require('cheerio');
    const rqtpro  = require('request-promise');
    const url     = 'https://www.ismailgultekin.com/';

    rqtpro(url).then((html)=>{
      //console.log(html);
      const $ = cheerio.load(html);

      const baslikcek = $('.user-specs h1').text();
      console.log(baslikcek);
    });
  

Kodlarımızı yazdıktan sonra terminalden index.js dosyamızı node ile çalıştıralım. Terminal Kodumuz:

    node index.js
  

Evet başarılı Sonuç olarak ekrana site title bastı: İsmail Gültekin

Nodejs Bot Nasıl Yapılır

 

Puppeteer ile Nodejs Bot Yapımı

Puppeteer ile Nodejs Bot Yapımında puppeteertest adında bir klasor oluşturalım ve içine girip index.js dosyasımızıda oluşturarak npm ile gerekli paketleri yükleyelim.

Terminalden ilk olarak npm init -y ile package.json dosyamızı oluşturalım. Sonrasında ise puppeteer paketimizi npm ile dahil edelim. Terminalden kodlarımızı sırasıyla uyglayalım.

    mkdir puppeteertest
    cd puppeteertest
    touch index.js

    npm init -y
    npm install puppeteer
  

Gerekli dosya yapısını nodejs modüllerini ve npm puppeteer paketimizi projemize dahil ettikten sonraki aşama index.js dosyamız içine yazacağımız kodlar:

    const puppeteer = require('puppeteer');

    const tara      = async(siteurl) =>{
      const browser = await puppeteer.launch();
      const page    = await browser.newPage();
      await page.goto(siteurl);

      //incele sağ click elements html kodunda h1 sağ click Copy > Copy XPath
      const [baslikxpath] = await page.$x(`//*[@id="html5Canvas"]/div/main/div/div/div/div/div[1]/div/div/div/div[2]/h1`);
      const baslikcontent = await baslikxpath.getProperty('textContent');
      const baslik = await baslikcontent.jsonValue();

      console.log(baslik);
      await browser.close();
    }

    tara('https://ismailgultekin.com');
  

Şimdi index.js dosyamızı node olarak terminalden çalıştıralım.

    node index.js
  

Evet başarılı Sonuç olarak ekrana site title bastı: İsmail Gültekin

Nodejs ile Web Scraping

 

Ne Yaptık?

İlk olarak puppeteer npm paketini projemizde kullanacağımızı belirttik sonrasında tara adında bir bot fonksiyonu yazdık. Bunu yazarken async kullandık. Peki Neden? bunu konunun sonuna merak edenler için ayrıca bıraktım.

page.goto(baglanılacak site url) adresi veriyoruz. await page.$x olan yere ise html Xpath tanımlamasını yani bot ile sadece alacağımız yerin html xpath'ini kopyalayıp yazmamız gerekiyor.

Xpath değerini baslikxpath dizisine alıp, içindeki getProperty textContent değerini kullanacağımızı belirterek gelen diziyi jsonValue ile sadece belirttiğimiz yeri baslik degiskenine tanımlayarak ekrana yazmasını istiyoruz. Son olarak browser close ile tarama işlemini sonlandırıyoruz.

Xpath nasıl alınır?

Xpath almak için bot yazacağınız siteden almak istediğiniz yerin üzerine gelerek mausun sağ tuşuna basarak incele seçimine tıklıyoruz.

Xpath nasıl alınır

 

Açılan html kodları arasından seçtiğimiz alan mause üzerindeyken Copy ve Sonrasında Copy XPath diyerek kopyalıyoruz.

Xpath nasıl kopyalanır

 

Async Await Neden Kullanılır

async çalışabilmeniz için fonksiyon olarak async tanımlamanız gerekiyor. Mantığı işlem sırası belirterek çalışabilmenizi sağlıyor. Javascript asenkron bir dil ve işlem sırası olmadan tüm işlemler aynı anda çalışabilir demiştikya burada Async fonksiyonunda await keywordü ile kontrolünü ve işlem sırasını biz belirleyebiliyoruz.

async await yapısında bir işlem bitmeden diğer işleme geçme yapmaz asenkron olan javascript dilinde bu önemli bir özellik callback, promise ile de bu işlemi yapabiliriz ama en temiz kod ve çalışma mantığı async await yapısıdır.

Nodejs ile Bot yapımında kullandığım kodları github üzerinde paylaşıyorum. Buradan indirebilirsiniz
Puppeteer ile web scraping yapmak github üzerindeki kütüphanesini incelemenizi tavsiye ederim. Puppeteer Github
Cheerio ile web scraping yapmak github üzerindeki kütüphanesini incelemenizi tavsiye ederim. cheerio Github
Diğer nodejs makalelerini incelemenizi tavsiye ederim. Nodejs
Umarım faydalı bir anlatım olmuştur. Nodejs ile bot yapımı konusunda sorun yaşarsanız. Yorum yaparak yada Soru Sor bölümünden bana ulaşabilirsiniz. Teşekkürler...

Görüş Hata Bildir

Güvenlik Kodunuz:

Yorum Yap

Yorum kodunuz:

0.0695