İ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.
- İçindekiler
- Bot Nedir?
- Neden bot(robot)'a ihtiyac duyarız?
- Neden Nodejs ile Bot(robot) Yapılır?
- Cheerio ve request-promise ile nodejs bot yapımı
- Puppeteer ile Nodejs Bot Yapımı
- Ne Yaptık?
- Xpath nasıl alınır?
- Async Await Neden Kullanılır?
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

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

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.

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

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.

Telif Hakkı:
Problemi Şikayet Et!HAKKIMDA
Yazılım Uzmanlığı konusunda 11 yılı aşkın süredir Türkiye'de Cumhurbaşkanlığı olmak üzere Kurumlara ve Tüzel kişilere; Yön verme, Yücelik Sağlama ve Büyüme gereksinimlerinden doğan Yazılım ihtiyaclarına çözümler sunmaktayım.
<html>
<body>
<h5>
Yazılım
&
Teknoloji
</h5>
<p>
Dünyasına
Hoş Geldiniz.
</p>
</body>
</html>
Son Eklenen Konular
Nginx Nedir, Nasıl Çalışır, Kurulumu, Hata ve Çözümü
03 Haziran, 2022
Web Site | Web Tasarım | Web Yazılım
27 Nisan, 2022
Html URL ASCII Karakter kodları
04 Mart, 2022
Jquery Alert, Sweet alert, Dialog Kullanımı
03 Mart, 2022
Doğal Seo Çalışması Nasıl Yapılır?
19 Şubat, 2022
En Çok Okunanlar
Google api key nasıl alınır?
26 Eylül, 2013
Youtube Video'sunu Gif Yapma Gif'e Çevirme
17 Ağustos, 2013
linux çeşitleri nelerdir?
13 Ağustos, 2013
Php ile bot nasıl yapılır?
22 Eylül, 2013
Ajax ile sayfa yenilenmeden resim yükleme nasıl yapılır?
04 Ekim, 2013
İlgili İçerikler
-
12 Aralık, 2021 1308
Nodejs https server ssl url ile nasıl çalışır?
-
27 Haziran, 2021 2522
Nodejs Projesini Sunucuya Yükleme, Nodejs Deploy işlemi
-
26 Haziran, 2021 1553
Nodejs Server Port Kurma, sonrasında veri gönderme, veri alma ve port nasıl Dinlenir?
-
08 Haziran, 2021 880
Nodejs Olaylar (Events) Yöneticisi
-
08 Haziran, 2021 3319
Nodejs ile Dosya oluşturma, okuma, yazma ve silme işlemleri
-
08 Haziran, 2021 3125
Nodejs Paket Yönetimi(NPM) Komutları ve Kullanımı