Node.js ve Puppeteer | Başlangıç #1

Roichue

Asistan Moderatör
31 Mar 2022
1,308
840
Millî İstihbarat Teşkilatı
NODE.JS VE PUPPETEER | BAŞLANGIÇ #1

Puppeteer bir tarayıcı otomasyon kütüphanesidir. Web scraping, otomatik testlerin yapılması, kullanıcı etkileşimlerinin simüle edilmesi gibi birçok senaryoda kullanılabilir.
Puppeteer, web tarayıcısı üzerinde bir dizi işlem gerçekleştirmenizi sağlayan güçlü bir kütüphanedir.

Örneğin: Sayfa açma, form doldurma, butona tıklama, kayıt oluşturma, yönlendirmeler, veri kazıma

2bWoAXtnij.gif


PUPPETEER | ÖRNEKLERLE ANLATIMLAR VE TEMEL GİRİŞ
JavaScript:
const puppeteer = require('puppeteer');

( async () => {

  const browser = await puppeteer.launch()
  const page = await browser.newPage()

  await page.goto('https://turkhackteam.org')

  await browser.close()
})();
Kodlarımızın ne işine yaradığını açıklayalım:​

const browser = await puppeteer.launch()​
Bu kısımda puppeteeri başlatıyoruz.
const page = await browser.newPage()​
Burda kendimize bir sayfa oluşturuyoruz. Yani aslında örneğin bilgisayarınızdan Operayı açtınız hiç bir sayfa yok.. Ardından:
page.goto('TurkHackTeam')​
Kullanarak bir web sitesine gidiyoruz.
await browser.close()​
Tüm işlemler bittikten sonra bu kodu kullanıp tarayıcıyı kapatabiliriz.​

2bWoAXtnij.gif


Kendinize öncelikle konuyu tam olarak anlayabilmek için bir IDE açın ve üstteki kodun tamamını bir dosya'ya yapıştırın.
Örneğin gerçek bir işlem yapalım sizlerle:


page.goto('tiktok.com/@Roichue'); / Yazılımımız bu linke giriş yaptı ardından ondan bir veri kazıması yapmasını isteyeceğiz.
Bunun için Xpathlere ihtiyacımız vardır.

XPATH Nedir?
Aslında gayet basit bir şekilde açıklamak gerekirse XPath, XML veya HTML belgelerinde belirli textleri bulmak için kullanılan bir sorgu biçimi.
Bu konulara çok detaylı bir şekilde 2. inci konuda gireceğiz. Kafanızı fazla karıştırmayalım.


JavaScript:
const selector = '/html/body/div[1]/div[2]/div[2]/div/div/div[1]/div[1]/div[2]/h1'

Burda XPATH'imizi belirttik benim aldığım yer kullanıcı adı öğesinin XPATH'i yani girilen linkte tiktok kullanıcı adını çekmeye çalışacağız.



JavaScript:
await page.waitForXPath(selector)

Bu kodumuzda elementimizin yüklenmesini bekliyor. Elementi sayfada gördükten sonra bir sonra ki satıra geçer.

Bu bizim için çok önemlidir çünkü bunu eklemezsek şöyle düşünün​
Olmayan bir şeye işlem yapmaya çalışacak.

JavaScript:
const text = await page.evaluate(element => element.textContent, handle[0])

Bu kısımda kullanıcı adının içeriğini çekiyoruz. "/html/body/div[1]/div[2]/div[2]/div/div/div[1]/div[1]/div[2]/h1" burda kopyaladığımız xpathin text içeriğini aldık. Yani kullanıcı adını çektik, link istediği kadar farklı olsun Xpath üzerinde bir değişiklik olmadığı sürece her zaman kullanıcı adını çekecektir.

İllaha xpath ile yapmamızada gerek yok bu tür şeyleri html bilgileri ilede yapabiliriz. Class ve idlere göre vb. Bunlarıda ileri ki bölümlerde göstereceğiz.
Kodun Son Hali:

JavaScript:
 await page.goto("https://tiktok.com/@roichue")
 
      const selector = '/html/body/div[1]/div[2]/div[2]/div/div/div[1]/div[1]/div[2]/h1'
      await page.waitForXPath(selector)
 
      const handle = await page.$x(selector)
      const text = await page.evaluate(element => element.textContent, handle[0])
 
      await browser.close()
 
      console.log(`Kullanıcı Adınız: ${text}`)

2bWoAXtnij.gif


nx62eby.jpg


Örneğin tiktok.com/@MercedesBenz linkine gitseydik kullanıcı adınızı mercedesbenz olarak çekicektik.

Sonuç olarak, bu konuda puppetere ufaktan bir başlangıç yaptık bilgileri 2. bölümde kesin olarak pekiştireceğiz. Tahminen 4. ve 5. bölümlerde işin en iyi kısımlarına yavaştan gireceğiz. Bir çok projeyi yapacağız bu seride.

2. Bölümde XPATH ile nasıl işlem yapılır üstteki özet geçtiğimiz şeyleri detaylı bir biçimde anlatacağız.

2bWoAXtnij.gif


Anlamadığınız noktalar olursa sorabilirsiniz.
Hayırlı forumlar.​
 

sasorii

Asistan Moderatör
2 Mar 2023
211
97
nijerya
NODE.JS VE PUPPETEER | BAŞLANGIÇ #1

Puppeteer bir tarayıcı otomasyon kütüphanesidir. Web scraping, otomatik testlerin yapılması, kullanıcı etkileşimlerinin simüle edilmesi gibi birçok senaryoda kullanılabilir.
Puppeteer, web tarayıcısı üzerinde bir dizi işlem gerçekleştirmenizi sağlayan güçlü bir kütüphanedir.

Örneğin: Sayfa açma, form doldurma, butona tıklama, kayıt oluşturma, yönlendirmeler, veri kazıma

2bWoAXtnij.gif



PUPPETEER | ÖRNEKLERLE ANLATIMLAR VE TEMEL GİRİŞ




JavaScript:
const puppeteer = require('puppeteer');



[SIZE=4][COLOR=rgb(255, 255, 255)]( async () => {



  const browser = await puppeteer.launch()

  const page = await browser.newPage()



  await page.goto('https://turkhackteam.org')



  await browser.close()

})();
[/COLOR][/SIZE]





Kodlarımızın ne işine yaradığını açıklayalım:



const browser = await puppeteer.launch()


Bu kısımda puppeteeri başlatıyoruz.




const page = await browser.newPage()


Burda kendimize bir sayfa oluşturuyoruz. Yani aslında örneğin bilgisayarınızdan Operayı açtınız hiç bir sayfa yok.. Ardından:




page.goto('TurkHackTeam')


Kullanarak bir web sitesine gidiyoruz.




await browser.close()


Tüm işlemler bittikten sonra bu kodu kullanıp tarayıcıyı kapatabiliriz.


2bWoAXtnij.gif


Kendinize öncelikle konuyu tam olarak anlayabilmek için bir IDE açın ve üstteki kodun tamamını bir dosya'ya yapıştırın.
Örneğin gerçek bir işlem yapalım sizlerle:



page.goto('tiktok.com/@Roichue'); / Yazılımımız bu linke giriş yaptı ardından ondan bir veri kazıması yapmasını isteyeceğiz.
Bunun için Xpathlere ihtiyacımız vardır.

XPATH Nedir?
Aslında gayet basit bir şekilde açıklamak gerekirse XPath, XML veya HTML belgelerinde belirli textleri bulmak için kullanılan bir sorgu biçimi.
Bu konulara çok detaylı bir şekilde 2. inci konuda gireceğiz. Kafanızı fazla karıştırmayalım.


JavaScript:
const selector = '/html/body/div[1]/div[2]/div[2]/div/div/div[1]/div[1]/div[2]/h1'

Burda XPATH'imizi belirttik benim aldığım yer kullanıcı adı öğesinin XPATH'i yani girilen linkte tiktok kullanıcı adını çekmeye çalışacağız.



JavaScript:
await page.waitForXPath(selector)

Bu kodumuzda elementimizin yüklenmesini bekliyor. Elementi sayfada gördükten sonra bir sonra ki satıra geçer.

Bu bizim için çok önemlidir çünkü bunu eklemezsek şöyle düşünün

Olmayan bir şeye işlem yapmaya çalışacak.



JavaScript:
const text = await page.evaluate(element => element.textContent, handle[0])



Bu kısımda kullanıcı adının içeriğini çekiyoruz. "/html/body/div[1]/div[2]/div[2]/div/div/div[1]/div[1]/div[2]/h1" burda kopyaladığımız xpathin text içeriğini aldık. Yani kullanıcı adını çektik, link istediği kadar farklı olsun Xpath üzerinde bir değişiklik olmadığı sürece her zaman kullanıcı adını çekecektir.



İllaha xpath ile yapmamızada gerek yok bu tür şeyleri html bilgileri ilede yapabiliriz. Class ve idlere göre vb. Bunlarıda ileri ki bölümlerde göstereceğiz.

Kodun Son Hali:



JavaScript:
 await page.goto("https://tiktok.com/@roichue")



      const selector = '/html/body/div[1]/div[2]/div[2]/div/div/div[1]/div[1]/div[2]/h1'

      await page.waitForXPath(selector)



      const handle = await page.$x(selector)

      const text = await page.evaluate(element => element.textContent, handle[0])



      await browser.close()



      console.log(`Kullanıcı Adınız: ${text}`)



2bWoAXtnij.gif




nx62eby.jpg




Örneğin tiktok.com/@MercedesBenz linkine gitseydik kullanıcı adınızı mercedesbenz olarak çekicektik.



Sonuç olarak, bu konuda puppetere ufaktan bir başlangıç yaptık bilgileri 2. bölümde kesin olarak pekiştireceğiz. Tahminen 4. ve 5. bölümlerde işin en iyi kısımlarına yavaştan gireceğiz. Bir çok projeyi yapacağız bu seride.



2. Bölümde XPATH ile nasıl işlem yapılır üstteki özet geçtiğimiz şeyleri detaylı bir biçimde anlatacağız.



2bWoAXtnij.gif




Anlamadığınız noktalar olursa sorabilirsiniz.

Hayırlı forumlar.
Elinize sağlık
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.