Pada artikel ini, saya akan menunjukkan kepada Anda bagaimana Anda dapat melakukan web scraping menggunakan Puppeteer dan Nodejs. Untuk memulainya, pertama-tama kita harus memahami apa itu web scraping dan bagaimana Puppeteer dapat membantu kita melakukannya.

Pengikisan Web

Web scraping adalah proses mengekstraksi data dari halaman web. Ini melibatkan pengambilan halaman web dan kemudian mengekstraksi data darinya. Setelah mengekstrak data, Anda dapat melakukan apa pun yang Anda inginkan dengan data tersebut. Anda dapat menggunakannya untuk API atau menyimpannya dalam file CSV.

Dalang

Dalang adalah perpustakaan Nodejs sumber terbuka yang dikembangkan oleh Google. Ini didasarkan pada chromium, versi Google Chrome yang populer. Dalang berjalan tanpa kepala secara default tetapi dapat dikonfigurasi untuk menjalankan Chrome atau Chromium penuh (tanpa kepala).
Ini tidak hanya memungkinkan kita melakukan pengikisan web tetapi kita dapat melakukan lebih banyak hal dengannya. Menyukai:

  1. Menghasilkan tangkapan layar halaman web.
  2. Menghasilkan pdf.
  3. Otomatiskan pengiriman formulir, pengujian UI, input keyboard, dll.

Mari kita lakukan pengikisan web

Untuk memulai, kita memerlukan Nodejs di sistem kita. Jika Anda tidak memiliki Nodejs, Anda dapat menginstalnya dengan mengunjungi situs web resmi.
Sekarang buat folder dan beri nama sesuai keinginan Anda dan buka dalam vscode. Buka terminal dan tulis perintah berikut untuk menginisialisasi folder proyek dengan file package.json:

npm init -y

Sekarang buat file index.js. Setelah ini, jalankan perintah berikut untuk menginstal Puppeteer:

npm install --save puppeteer

Instalasi akan memakan waktu karena itu juga akan menginstal chromium. Jadi bersabarlah.

Untuk panduan khusus ini, kami akan menghapus halaman web ini:

Untuk mempermudah, kami hanya akan mengekstrak judul dan ringkasan dari halaman web ini. Sekarang buka file index.js dan ikuti langkah-langkah berikut:

Langkah 1

Membutuhkan Dalang agar kita bisa menggunakannya.

const puppeteer = require("puppeteer");

Langkah 2

Buat fungsi async agar kita bisa menggunakan kata kunci menunggu. Hal ini dikarenakan dalang menggunakan janji.

async function scrap() {
}
scrap();

Kami akan menulis sisa kode dalam fungsi ini.

Langkah 3

Panggil dalang.launch() untuk meluncurkan browser.

const browser = await puppeteer.launch();

Langkah 4

Panggil browser.newPage() untuk membuat instance halaman.

const page = await browser.newPage();

Langkah 5

Panggil page.goto() dan berikan URL halaman web yang ingin kita hapus sebagai argumen.

await page.goto("https://www.imdb.com/title/tt1013752/");

Langkah 6

Hubungi halaman.evaluate(). Dibutuhkan fungsi sebagai argumen. Dalam fungsi ini, kita dapat memilih elemen apa pun dari halaman web. Dalam kasus kami, kami akan memilih judul dan ringkasan dari halaman web tersebut.
Buka halaman web itu dan buka alat pengembang. Klik pada alat inspeksi (di pojok kiri atas) lalu klik judul.

Klik kanan pada elemen yang disorot pada tab Elemen lalu klik “salin” dan kemudian klik “salin pemilih” untuk menyalin pemilih cssnya. Dengan cara yang sama, Anda juga dapat menyalin pemilih ringkasan. Sekarang lihat kode berikut:

const data = await page.evaluate(() => {
   const title = document.querySelector("#title-overview-widget > div.vital > div.title_block > div > div.titleBar > div.title_wrapper > h1").innerText;
   const summary = document.querySelector("#title-overview-widget > div.plot_summary_wrapper > div.plot_summary > div.summary_text").innerText;
   return {
     title,
     summary
   }
});

Pada kode di atas, kita memilih judul dan ringkasan lalu menyimpan innerText di variabel (judul dan ringkasan). Setelah itu, kami mengembalikan sebuah objek (kami menggunakan sintaks singkatan es6) yang berisi judul dan ringkasan. Objek ini akan disimpan dalam variabel data. Dengan cara yang sama, Anda dapat memilih elemen apa pun dari halaman web, dan apa pun yang Anda kembalikan dari fungsi itu akan disimpan dalam variabel data.

Sekarang setelah kita berhasil mengekstrak datanya, kita bisa melakukan apa saja dengannya. Kita bisa menyimpannya dalam file CSV atau bisa menggunakannya untuk api.

Langkah terakhir

Panggil browser.close() untuk menutup browser.

await browser.close();

Untuk mengeksekusi file index.js tulis perintah berikut di terminal:

node index.js

Seperti inilah tampilan kode kita:

const puppeteer = require("puppeteer");
async function scrap() {
  // Launch the browser
  const browser = await puppeteer.launch();
  // Create an instance of the page
  const page = await browser.newPage();
  // Go to the web page that we want to scrap
  await page.goto("https://www.imdb.com/title/tt1013752/");
  // Here we can select elements from the web page
  const data = await page.evaluate(() => {
    const title = document.querySelector(
      "#title-overview-widget > div.vital > div.title_block > div > div.titleBar > div.title_wrapper > h1"
    ).innerText;
    const summary = document.querySelector(
      "#title-overview-widget > div.plot_summary_wrapper > div.plot_summary > div.summary_text"
    ).innerText;
    // This object will be stored in the data variable
    return {
      title,
      summary,
    };
  });
  // Here we can do anything with this data
  // We close the browser
  await browser.close();
}
scrap();

Kesimpulan

Pengikisan web adalah hal yang menyenangkan untuk dilakukan. Ini memiliki banyak kasus penggunaan. Ada beberapa perpustakaan lain yang dapat Anda gunakan untuk web scraping. Namun, Dalang membuatnya lebih mudah untuk melakukannya. Ini tidak hanya memungkinkan kita melakukan web scraping tetapi ada beberapa hal lain yang juga dapat kita lakukan.

Jika Anda ingin terhubung dengan saya, ikuti saya di twitter.