Web kazıma, web sitelerinden veri çıkarma işlemidir. Web tarayıcılarını kullanarak manuel olarak kazıyabilir veya Selenium ve Puppeteer gibi kütüphanelerle otomatikleştirebilirsiniz.
Selenium, web uygulamalarını otomatikleştirmenize ve tarayıcınızda herhangi bir kod yazmanıza gerek kalmadan web sitenizin işlevselliğini test etmenize olanak tanıyan açık kaynaklı bir araçtır. Java, Python, C# gibi diğer programlama dilleri ile de çalışır.
Puppeteer, başsız Linux sistemlerinde Chrome tarayıcı testlerini otomatikleştirmek için kullanılan bir JavaScript kütüphanesidir. Puppeteer Chrome'u destekler ve Ubuntu 16.04 LTS, 18.04 LTS ve Debian 9 Stretch/Buster/Siduction (64-bit) üzerinde test edilmiştir.
Bu makalede, Chrome tarayıcısını kullanarak uygulamaları otomatikleştirmek için Puppeteer ile NodeJS'de Selenium WebDriver'ı nasıl kullanacağımızı öğreniyoruz.
Puppeteer nedir?
Puppeteer, puppeteer.js kullanarak tarayıcıyı kontrol etmenizi sağlayan bir JavaScript kütüphanesidir. Kütüphane, herhangi bir 3. tarafa güvenmeden web sayfaları oluşturmak, yönetmek ve bunlarla etkileşim kurmak için bir API sağlar. Ayrıca, sayfayla etkileşime girebilmeniz için fare olaylarını ve klavye girişini yakalamayı da destekler.
Puppeteer nasıl çalışır?
Puppeteer, Chrome'u kontrol etmek için bir düğüm kütüphanesidir. Tarayıcıyı JavaScript ile kontrol etmenize ve yalnızca HTML, CSS ve JS kullanarak imkansız olan şekillerde etkileşimde bulunmanıza olanak tanır.
Fare/klavye olaylarını simüle etmek, ekran görüntüleri yakalamak, DOM öğelerini manipüle etmek, HTTP istekleri göndermek vb. için kullanabilirsiniz. Puppeteer ayrıca, API'lerinden herhangi birini doğrudan kullanmadan kuklacılık komut dosyalarınızı yazmanıza olanak tanıyan bir API'ye sahiptir. API hakkında daha fazla bilgiyi buradan edinebilirsiniz: https://github.com/puppeteerjs/puppeteer-api.
Puppeteer şu sorunu çözer: JavaScript çalıştırmadan bir tarayıcıyı nasıl kontrol edebilirim? Puppeteer fare/klavye olaylarını simüle etmenize, ekran görüntüleri yakalamanıza, DOM öğelerini manipüle etmenize, HTTP istekleri göndermenize ve çok daha fazlasına olanak tanır. Ayrıca kuklacılık komut dosyalarınızı doğrudan API'lerinden herhangi birini kullanmadan yazmanız da mümkündür. Bu, tarayıcı ile beklenmedik bir şekilde etkileşime giren kendi Chrome Uzantınızı oluşturmak istiyorsanız kullanışlıdır.
Karmaşıklık ve otomasyon bağlamı her geçen gün değişiyor, bu nedenle tek bir araç herkes için çözüm olmayabilir. Puppeteer'ın bazı sınırlamaları var. Yalnızca Chrome tarayıcısını destekler. Firefox için Puppeteer üzerinde çalışmalar devam ediyor.
Puppeteer kullanmanın avantajları nelerdir?
Puppeteer, komut dosyalarını kendiniz yazmak zorunda kalmadan tarayıcınızda çalıştırmak için kolay bir yol sağlar. Basit, hafif ve genişletilebilirdir. Herhangi bir programlama dili veya çerçevesi (NodeJS, Python, Java) ile kullanabilirsiniz. Kendi API'sine sahiptir, bu nedenle yalnızca web kazıma amacıyla başka bir API öğrenmek zorunda kalmazsınız.
Puppeteer'ı kullanmak için Selenium'un nasıl çalıştığını bilmenize gerek yok, ancak yine de tüm avantajlarını elde edersiniz: otomasyon, test edilebilirlik ve taşınabilirlik!
Puppeteer kullanmanın dezavantajları nelerdir?
Puppeteer çok genç bir framework. Hala beta aşamasında ve tüm tarayıcıları desteklemiyor (yalnızca Chrome, Firefox, Opera ve Safari'yi destekliyor). Ancak zamanla Puppeteer daha fazla tarayıcıyı destekleyebilecektir. API ayrıca Selenium kadar olgunlaşmamıştır, bu nedenle başlangıçta biraz sorun yaşayabilirsiniz, ancak zamanla daha iyi hale gelecektir. Puppeteer'ın resmi web sitesinde nasıl kullanılacağına dair birçok örnek bulabilirsiniz: puppeteerjs.com/docs/getting-started/.
Puppeteer'ı nasıl yüklerim?
Puppeteer'ı web sitesinden bir paket indirerek ya da elle kurarak yükleyebilirsiniz. Puppeteer depo sayfasına gidin ve işletim sisteminiz için en son sürümü indirin. Çalıştırmak için bilgisayarınızda NodeJS kurulu olmalıdır. Nereden başlayacağınızı bilmiyorsanız, buraya gidin: nodejs.org/en/download. npm install -g puppet komutunu çalıştırın. Bu, puppetserver'ı çalıştırmak için gerekli tüm bağımlılıkları indirecektir. Şimdi ev dizininizde bir terminal penceresi açın ve puppetserver yazın.
Her şey yolunda giderse buna benzer bir şey görmelisiniz:
$ node server Starting server… done! http://localhost:4200 Connecting…done! http://localhost:4200 Disconnected / Connected http://localhost:4200 <– Start scraping now!
Durdurmak için Ctrl+C tuşlarına basın, ardından exit yazın.
Selenyum nedir?
Selenium, web tabanlı uygulamaları otomatikleştirmek için kullanabileceğiniz güçlü bir araçtır. Genellikle Webdriver olarak da adlandırılır. Selenium bir süredir piyasada ve BT endüstrisindeki en popüler araçlardan biri haline geldi.
Selenyum ne işe yarar?
Selenium, düğmelere tıklamak, form doldurmak ve hatta sayfalar arasında gezinmek gibi farklı eylemleri gerçekleştirerek web sitelerinizi otomatikleştirmenize olanak tanır. Bu yazılımın temel amacı, kendiniz herhangi bir kod yazmak zorunda kalmadan otomatik testi kolay ve verimli hale getirmektir. Bu yazılımı tarayıcınızdan (Chrome/Firefox) veya Java, C# veya Python gibi bir programlama dilinde kullanabilirsiniz. Bilgisayarınıza yüklendikten sonra, 4444 numaralı bağlantı noktasında (varsayılan) çalışan selenium sunucusunu indirmelisiniz. Ardından Chrome/Firefox'u açın ve adres çubuğuna chrome://extensions yazın, burada mevcut uzantıların bir listesini göreceksiniz; Uzantıları Yönet'i seçin, ardından Paketlenmemiş Uzantıyı Yükle düğmesine tıklayın.
Selenium'u web sitelerini, mobil uygulamaları ve masaüstü uygulamalarını test etmek için kullanabilirsiniz. Kullanımı kolaydır ve herhangi bir programlama bilgisi olmadan web tabanlı uygulamaları otomatikleştirmenize olanak tanır. Testleri kullanıcı dostu bir şekilde geliştirmek için görsel bir arayüze sahip olan Selenium IDE'yi kullanarak kendi testlerinizi de oluşturabilirsiniz.
Selenyumun Avantajları
- Tüm web tarayıcılarında (Chrome, Firefox, IE) ve mobil cihazlarda (Android) çalışır. Selenium çapraz platformdur. Tek yapmanız gereken, seçtiğiniz platform için bir IDE yüklemek ve API'yi kullanmaya başlamaktır. Her platform için yeni API'ler veya farklı diller öğrenmek zorunda değilsiniz - sadece tüm platformlarda çalışan tek bir dil kullanın.
- Selenium, Java, C#, Python ve diğerleri dahil olmak üzere piyasadaki çoğu programlama dilini destekler. JavaScript'te bir şeyi otomatikleştirmek istiyorsanız, selenium-nodejs ile NodeJS'yi kullanabilirsiniz.
- Selenium, Protractor, WebDriver vb. gibi çeşitli çerçeveleri destekler. Bu çerçevelerle ilgili en iyi şey, doğrudan tarayıcının içine yazılan saf tarayıcı otomasyon koduna kıyasla işleri kolaylaştıran güzel bir soyutlama katmanı sağlamalarıdır. Örneğin, testlerimizin aynı anda birden fazla tarayıcıda çalışmasını istiyorsak, bunu selenium-web driver ve selenium-webdriver2 ile yapabiliriz. Bu, aynı anda birden fazla tarayıcıda test yaparken herhangi bir sorun yaşamayacağımız anlamına gelir, çünkü her tarayıcıda manuel olarak özel kod yazmak yerine her şey çerçevenin kendisi tarafından ele alınacaktır (bu da test paketimizin çok daha karmaşık görünmesine neden olur).
- Selenium için Google Chrome uzantıları, Firefox eklentileri gibi birçok eklenti mevcuttur. Başka ne var? Çok sayıda örnek! Ve sadece açık kaynak projelerden değil, Appium, Sauce Labs veya Watir gibi ticari projelerden de. Eğer hızlı ve kolay bir şey arıyorsanız, bunları deneyin! Bunlar harika araçlar! Eşzamansız testleri de desteklerler, yani testiniz beklenenden daha uzun sürse bile, birbirlerinin yürütme akışını engellemeden paralel olarak eşzamanlı çalışan diğer testleri etkilemeyecektir (eşzamansız mod). Bu şekilde, uygulamamızı yavaşlatma endişesi olmadan hızlı UI testleri yazabiliriz.
Selenium ve Puppeteer ile İlgili Pazar Trendleri: Neden Önemsemelisiniz?
Selenium & Puppeteer'ın pazar trendleri, özellikle Selenium 2'nin 2014'te piyasaya sürülmesinden bu yana, son birkaç yılda kullanımda önemli bir artış olduğunu göstermektedir. Selenium'un popülaritesi o zamandan beri daha da artmaya devam etti, bu da öngörülebilir gelecekte muhtemelen bu oranda büyümeye devam edeceği anlamına geliyor.
Web Testinin Geleceği Nedir?
Açık kaynak topluluğu, yakın zamanda herhangi bir yavaşlama belirtisi olmadan yeni teknolojiler geliştirmeye ve mevcut olanları iyileştirmeye devam ediyor. İnovasyona ve yeni araçlar yaratmaya devam ettiğimiz sürece, daha fazla web testi teknolojisi iyileştirmesi bekleyebiliriz.
Web Otomasyon Araçları: Neden Kullanmalısınız?
Ekip üyelerinizin projeleri üzerinde çalışma zamanı geldiğinde veya kod tabanlarını otomatik testlerle test etmek için yardıma ihtiyaç duyduklarında, WebDriver gibi bir otomasyon aracına erişebilmeleri, bir şeyin manuel olarak test edilmesini istedikleri her seferinde manuel çözümleri elle denemekten çok daha kolay olacaktır.
WebDriver gibi bir web otomasyon aracınız olduğunda, testlerinizi otomatikleştirmek ve farklı dillerde yazmak için kullanabilirsiniz. Ayrıca tarayıcı ile etkileşime geçmek ve uygulamanın manuel olarak yapılması zor veya imkansız olan belirli özelliklerini test etmek için de kullanabilirsiniz. Olasılıklar sonsuzdur!
Bir otomasyon aracı kullanmak, kaputun altında işlerin nasıl yürüdüğü konusunda endişelenmenize gerek kalmadan kod tabanınız için otomatik testler yazmanıza olanak tanıyarak hayatınızı çok daha kolaylaştıracaktır.
Selenium veya Puppeteer: Webscraping için hangisi en iyisidir?
İkisi arasındaki temel fark, Puppeteer'ın Node.js'de, Selenium'un ise tarayıcıda çalışmasıdır.
Puppeteer'ı web kazıma ve API testi için kullanabilirsiniz, ancak Selenium kadar yaygın olarak desteklenmez. Ayrıca yerleşik bir UI test çalıştırıcısı yoktur, bu nedenle PhantomJS veya NightwatchJS gibi başsız bir tarayıcı ile kullanmak istiyorsanız kendiniz yazmanız gerekir.
Selenium, Puppeteer'a göre tarayıcılardan daha fazla destek alır ve UI test çalıştırıcısı, çoğu popüler tarayıcıyla (Chrome dahil) kutudan çıkar çıkmaz çalışır. Bununla birlikte, Puppeteer'a kıyasla Selenium'da bazı özellikler hala eksiktir. Özellikle, bir sayfadaki öğelerle etkileşim için WebDriver API'leri - bu, yalnızca bu kütüphaneyi kullanarak birden çok sayfa / alan / uygulama (örneğin, bağlantılara tıklama) genelinde karmaşık etkileşimleri otomatikleştirmenin daha zor olduğu anlamına gelir.
Şimdi, dönen yerleşim proxy 'lerimizin hem Selenium hem de Puppeteer ile web kazıma işlemlerini büyük ölçüde geliştirdiğini belirtmenin tam zamanı.