cara scraping google maps menggunakan puppeteer

Cara Scraping Google Maps Menggunakan Puppeteer

Dalam tutorial ini, kita akan menjelajahi bagaimana melakukan scraping Google Maps dengan menggunakan Puppeteer, sebuah library Node.js yang memungkinkan otomatisasi peramban web.

Dalam dunia teknologi informasi, scraping telah menjadi salah satu metode yang populer untuk mengumpulkan data dari berbagai sumber. Salah satu sumber data yang paling berguna dan kaya informasi adalah Google Maps.

Dengan menggunakan teknik scraping pada Google Maps, kita dapat mengakses dan mengumpulkan daftar tempat, ulasan, peringkat, dan informasi lainnya yang sangat berharga untuk berbagai keperluan, seperti analisis pasar, pencarian bisnis, atau pengembangan aplikasi berbasis lokasi.

Persiapan

Sebelum memulai, pastikan Anda telah menginstal Puppeteer di environment pengembangan Anda. Anda dapat menginstalnya dengan menjalankan perintah berikut menggunakan package manager yang Anda gunakan (misalnya, npm atau yarn):

npm install puppeteer

Setelah Puppeteer diinstal, Anda dapat membuat berkas JavaScript baru, misalnya index.js, dan mulai menulis kode.

Langkah 1: Mengimpor Puppeteer

Pertama-tama, kita perlu mengimpor library Puppeteer agar dapat menggunakannya dalam kode kita. Tambahkan kode berikut di awal berkas index.js:

const puppeteer = require('puppeteer');

Langkah 2: Membuat Fungsi Auto Scroll

Fungsi autoScroll akan digunakan untuk melakukan scroll otomatis pada halaman Google Maps. Kode berikut akan menjalankan scroll hingga mencapai akhir halaman:

async function autoScroll(page) {
  await page.evaluate(async () => {
    await new Promise((resolve) => {
      var totalHeight = 0;
      var distance = 100;
      var timer = setInterval(() => {
        const element = document.querySelectorAll('.m6QErb.DxyBCb.kA9KIf.dS8AEf.ecceSd')[1]
        var scrollHeight = element.scrollHeight;
        element.scrollBy(0, distance);
        totalHeight += distance;

        if (totalHeight >= scrollHeight) {
          clearInterval(timer);
          resolve();
        }
      }, 100);
    });
  });
}

Langkah 3: Membuat Fungsi Parse Places

Fungsi parsePlaces akan digunakan untuk menguraikan informasi tempat dari halaman Google Maps. Kode berikut akan mengambil semua elemen dengan kelas .qBF1Pd dan mengambil teks dari setiap elemen tersebut:

async function parsePlaces(page) {
  let places = [];

  const elements = await page.$$('.qBF1Pd');

  if (elements && elements.length) {
    for (const el of elements) {
      const name = await el.evaluate(div => div.textContent);

      places.push({ name });
    }
  }

  return places;
}

Langkah 4: Menjalankan Puppeteer

Selanjutnya, kita akan menjalankan Puppeteer untuk mengambil daftar tempat dari Google Maps. Tambahkan kode berikut di akhir berkas index.js:

(async () => {
  const browser = await puppeteer.launch({ headless: false });
  const page = await browser.newPage();

  const searchQuery = 'nasi pecel';
  const encodedSearchQuery = encodeURIComponent(searchQuery);
  const url = `https://www.google.com/maps/search/${encodedSearchQuery}`;

  await page.goto(url);

  await page.screenshot({ path: 'example.png' });

  await autoScroll(page);

  const places = await parsePlaces(page);

  console.log(places);

  await browser.close();
})();

Menjalankan Kode

Untuk menjalankan kode, buka terminal atau command prompt dan navigasikan ke direktori tempat Anda menyimpan berkas index.js. Jalankan perintah berikut:

node index.js

Puppeteer akan membuka halaman Google Maps dengan kata kunci pencarian ‘nasi pecel’, melakukan scroll otomatis untuk mengumpulkan semua tempat, mengambil informasi dari setiap tempat, dan menampilkannya di konsol.

Anda juga akan melihat bahwa program ini akan mengambil tangkapan layar halaman Google Maps dan menyimpannya sebagai berkas ‘example.png’ di direktori yang sama.

Selamat! Anda telah berhasil membuat program menggunakan Puppeteer untuk mengambil daftar tempat dari Google Maps.

Leave a Comment

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

Scroll to Top