Node.js ile Nightmare.js Kullanarak Tarayıcı Robotu

By | 24 June 2016

Nightmare.js, Node.js ve Electron.js’te kullandığım bir tarayıcı otomasyon kütüphanesidir. En büyük avantajları hızlı ve kolay olmasıdır. Zaten örneklerden bunu anlayacağız. Bu yazımda basit araçlar yaparak, özelliklerini anlatıyor olacağım. Mesala bir örnek ile  başlayalım, bu web sitesinin title’ını çekelim. Öncelikle kurulumu yapıyoruz.

npm install nightmare    //yetki isterse başına sudo koymayı unutmayın
var Nightmare = require('nightmare'),
nightmare = Nightmare();

nightmare.goto('http://mertblog.net')    //robotumuzun gideceği domain
  .evaluate( () => {       //burada git diyoruz ve yukarda verdiğimiz web sitesinden title'ı çek
    return document.title;
})
  .end()   //işini bitirdikten sonra o web sitesinden ayrıl
  .then( (title) => {   //buraya title callback olarak geliyor ve ekrana bastırıyoruz.
    console.log(title);
  });

node app.js diyerek programı çalıştırıyorum. Burada önce kütüphanemizi require ediyoruz ve nightmare objemizi oluşturuyoruz. Daha sonra kodlarda açıkladığım gibi parametrelerimi girip işlemi sonlandırıyoruz, bu kadar basit. Aşağıdaki resimde de gördüğümüz gibi başlığı başarıyla çekti.

nightmare-js-node-js

Aşağıdaki kodlarda ise senaryomuz önce arama inputunu buluyoruz. İçinde ‘Python’ yazdırıyoruz ve ara butonuna click eventi uygulatıyoruz. Gelen sayfada ise Python ile ilgile olan sonuçları göreceğiz.

var Nightmare = require('nightmare');    //kütüphanemizi require ediyoruz
var nightmare = Nightmare({ show: true});  //burada electron uygulaması ayağa kaldıracak, eğer bunu görmek istersen yani vereceğim websitesinde arama yerine python yazan, butona tıklayan ve sonuçları döndüren ekran görmek istemezsek false değeri verebiliyoruz.

nightmare
  .goto('http://mertblog.net')
  .type('form[action*="http://mertblog.net"] [name=s]', 'Python')    //name değer s olan inputa Python yaz
  .click('form[action*="http://mertblog.net"] [id=searchsubmit]')  //id'si searchsubmit olan butona bas
  .wait('#post')  //post classını bekle, bu class içinde python ile ilgili yazılar var
  .evaluate( () => {
    return document.querySelector('#post header h2 a').text   ////sayfa içindeki elementlere ulaşmak istersek bu şekilde yapabiliyoruz
  })
  .end()  //işin bitince sayfadan çık
  .then( (result) => {
    console.log(result)
  })
  .catch( (error) => {
    console.error('Search failed:', error);
  });

electron-js

Kodu çalıştırdığımızda karşımıza anasayfa geliyor daha sonra inputa python yazıyor ve ara butonuna basıyor. Ardından bize sonuçları döndürüyor. Nightmare ile yapabileceklerimiz tabiki bunlarla sınırlı değil daha birçok özelliği var. Verdiğimiz websitesinde Js vs Css çalıştır, cache ataması veye silmesi gibi işlemler de yapabiliyoruz. Anlatacaklarım şimdilik bu kadar, bir dahaki yazımda görüşmek üzere… 🙂

 

Leave a Reply

Your email address will not be published. Required fields are marked *

*