0

0

0

share


#Python#data-science
0 Reaksi

0 Komentar

Scraping Data Rumah Sakit dari Google dengan Selenium

Profile
Bahrul Rozak

10 Desember 2024

Scraping Data Rumah Sakit dari Google dengan Selenium

Di dunia data science, web scraping telah menjadi alat yang sangat berguna untuk mengumpulkan data publik dari berbagai situs web. Bagi kamu yang ingin mengekstrak informasi berguna dari hasil pencarian Google, Selenium merupakan pilihan yang sangat tepat. Dalam artikel ini, kita akan membahas cara menggunakan Selenium untuk melakukan scraping data rumah sakit di Jakarta, dan menyimpannya dalam file CSV untuk analisis lebih lanjut.

Apa Itu Selenium?

Selenium adalah framework sumber terbuka yang digunakan untuk mengotomatisasi pengujian aplikasi web dengan mengontrol peramban. Selenium memungkinkan kamu untuk berinteraksi secara programatik dengan halaman web, melakukan tugas-tugas seperti mengklik tombol, mengisi formulir, dan bahkan mengambil konten dari halaman yang dinamis. Selenium banyak digunakan untuk pengujian web, namun juga sangat berguna untuk web scraping, terutama ketika berhadapan dengan situs web yang mengandalkan JavaScript untuk merender konten.

Gambaran Proyek

Dalam artikel ini, kita akan membuat sebuah script Python menggunakan Selenium untuk melakukan scraping data rumah sakit yang muncul dalam hasil pencarian Google. Secara khusus, kita akan mengumpulkan:

  • Nama rumah sakit
  • Alamat
  • Rating
  • Link situs web

Kemudian, kita akan menyimpan data yang telah diambil dalam sebuah file CSV untuk digunakan lebih lanjut.

Alat dan Library yang Digunakan

  • Selenium: Untuk mengontrol peramban web dan mengekstrak data.
  • Chrome WebDriver: Untuk berinteraksi dengan Google Chrome.
  • webdriver_manager: Untuk mengelola ChromeDriver secara otomatis.
  • CSV: Untuk menyimpan data yang telah diambil.

Menyiapkan Lingkungan Pengembangan

Untuk memulai, kita perlu menyiapkan lingkungan Python dengan library yang dibutuhkan. Kamu dapat menginstal library yang diperlukan dengan menjalankan perintah berikut:

pip install selenium pip install webdriver_manager

Menulis Script Web Scraping

Mari kita uraikan script ini dalam beberapa bagian.

Langkah 1: Mengimpor Library yang Diperlukan

from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By from webdriver_manager.chrome import ChromeDriverManager import time import csv

Di bagian ini, kita mengimpor modul yang diperlukan. webdriver dari Selenium memungkinkan kita untuk mengotomatisasi interaksi dengan browser, sementara webdriver_manager memastikan bahwa kita selalu menggunakan versi terbaru dari ChromeDriver.

Langkah 2: Menyiapkan WebDriver

# Setup WebDriver options = webdriver.ChromeOptions() driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)

Di sini, kita mengonfigurasi WebDriver untuk Chrome dan menyiapkannya dengan opsi konfigurasi tambahan (seperti mode headless, yang menjalankan browser di latar belakang). Untuk kesederhanaan, kita tidak mengaktifkan mode headless dalam script ini.

Langkah 3: Menentukan URL dan Membuka Halaman

# URL yang akan diambil datanya url = 'https://www.google.com/search?sca_esv=3539a24babae7179&tbm=lcl&q=rs+di+jakarta' # Membuka URL di browser driver.get(url) time.sleep(3) # Tunggu beberapa detik agar halaman sepenuhnya dimuat

Di bagian ini, kita mendefinisikan URL yang akan kita ambil datanya. Dalam contoh ini, kita menargetkan halaman hasil pencarian Google untuk rumah sakit di Jakarta. time.sleep(3) memastikan bahwa halaman sudah sepenuhnya dimuat sebelum kita mulai melakukan scraping.

Langkah 4: Mengambil Data dari Halaman Web

# Inisialisasi daftar untuk menyimpan data yang diambil all_results = [] # Loop untuk mengambil data dari beberapa halaman while True: # Mencari elemen hasil pencarian rumah sakit results = driver.find_elements(By.CLASS_NAME, 'VkpGBb') if not results: print("Tidak ada hasil ditemukan.") break # Loop untuk mengambil setiap hasil dari halaman for result in results: # Mengambil nama rumah sakit name = result.find_element(By.CLASS_NAME, 'dbg0pd').text if result.find_element(By.CLASS_NAME, 'dbg0pd') else 'Nama Tidak Tersedia' # Mengambil alamat rumah sakit address = result.find_element(By.CLASS_NAME, 'rllt__details').find_elements(By.TAG_NAME, 'div')[1].text if result.find_element(By.CLASS_NAME, 'rllt__details') else 'Alamat Tidak Tersedia' # Mengambil rating rumah sakit rating = result.find_element(By.CLASS_NAME, 'OSrXXb').text if result.find_element(By.CLASS_NAME, 'OSrXXb') else 'Rating Tidak Tersedia' # Mengambil link situs web rumah sakit link = result.find_element(By.CLASS_NAME, 'yYlJEf').get_attribute('href') if result.find_element(By.CLASS_NAME, 'yYlJEf') else 'Link Tidak Tersedia' # Menyimpan data dalam bentuk dictionary dan menambahkannya ke dalam daftar all_results.append({ 'name': name, 'address': address, 'rating': rating, 'link': link })

Pada bagian ini, kita mencari hasil pencarian rumah sakit di halaman menggunakan find_elements. Kemudian, kita mengekstrak setiap informasi nama, alamat, rating, dan link situs web dengan mengakses elemen HTML tertentu. Data tersebut disimpan dalam bentuk dictionary dan ditambahkan ke dalam daftar all_results.

Langkah 5: Menavigasi ke Halaman Berikutnya

# Mencari tombol "Next" untuk menuju ke halaman berikutnya try: next_button = driver.find_element(By.ID, 'pnnext') next_button.click() print("Halaman berikutnya ditemukan, melanjutkan scraping...") time.sleep(3) # Tunggu 3 detik untuk memuat halaman berikutnya except: # Jika tombol "Next" tidak ditemukan, berarti kita sudah berada di halaman terakhir print("Tidak ada halaman berikutnya. Scraping selesai.") break

Bagian ini mencari tombol "Next" di halaman dan mengkliknya jika tersedia. Jika tidak ada tombol "Next", script berhenti karena kita telah mencapai halaman terakhir.

Langkah 6: Menyimpan Data ke File CSV

# Menyimpan data yang diambil ke dalam file CSV with open('hospital_data_selenium.csv', mode='w', newline='', encoding='utf-8') as file: writer = csv.DictWriter(file, fieldnames=['name', 'address', 'rating', 'link']) writer.writeheader() # Menulis header kolom for result in all_results: writer.writerow(result)

Setelah data berhasil diambil, kita menyimpannya dalam file CSV untuk kemudahan akses dan analisis lebih lanjut. csv.DictWriter digunakan untuk menulis data dalam format yang terstruktur.

Langkah 7: Menutup WebDriver

# Menutup browser setelah scraping selesai driver.quit()

Akhirnya, kita menutup browser setelah proses scraping selesai.

Kesimpulan

Script ini menunjukkan betapa mudahnya menggunakan Selenium untuk melakukan web scraping pada situs dinamis seperti Google. Dengan memanfaatkan kemampuan Selenium untuk berinteraksi dengan konten yang dimuat dengan JavaScript, kita dapat dengan mudah mengambil data yang kita perlukan. Selain itu, proses ini dapat dengan mudah diperluas untuk mengekstrak berbagai informasi lain seperti detail produk, ulasan, atau daftar pekerjaan.

Dengan memahami cara mengotomatisasi proses ini, kamu dapat menghemat waktu yang biasanya digunakan untuk pengambilan data manual, dan lebih fokus pada analisis data yang lebih bermakna dan pengambilan keputusan.


Poin-Poin Utama:

  • Selenium memungkinkan kamu untuk mengotomatisasi interaksi dengan browser, seperti mengklik, menggulir, dan mengambil data dari situs web dinamis.
  • Data yang diambil dapat disimpan dengan mudah dalam file CSV untuk analisis lebih lanjut.
  • Navigasi antarhalaman dan pengambilan data terstruktur dari hasil pencarian Google dapat dilakukan dengan sangat mudah menggunakan Selenium.

Dengan mengikuti pendekatan ini, kamu akan memahami dan menguasai teknik web scraping menggunakan Selenium, yang dapat membuka peluang untuk mengumpulkan data dari berbagai sumber secara efisien.

0

0

0

share