Teman-teman harus menyadari bahwa Python dianggap sebagai salah satu bahasa pemrograman unggulan yang berlaku di banyak domain. Memang, ia menemukan utilitas di berbagai bidang mulai dari pembelajaran mesin, ilmu data, dan pengembangan web hingga administrasi sistem. Selain itu, Python sering berfungsi sebagai pilihan yang disukai bagi pengembang yang bertujuan untuk membangun sistem atau program otomatisasi, seperti web scraper.
Secara luas diakui bahwa otomatisasi telah secara konsisten menjadi subjek yang menonjol dalam sektor industri. Setiap proses yang melelahkan dan manual harus dibuat otomatis. Pernyataan ini memang akurat, bukan?
Pada dasarnya, otomatisasi merupakan kerangka prosedural yang dirancang untuk menangani tugas berulang secara efisien. Intervensi manual dianggap tidak perlu.
Dalam domain teknologi informasi, otomatisasi mengambil peran penting dalam meningkatkan produktivitas dan efisiensi. Di antara berbagai manifestasi otomatisasi, salah satu yang telah mendapatkan banyak dukungan dan adopsi luas, terutama sebagai jalan pembelajaran pengantar, adalah web scraping.
Apakah Anda tidak terbiasa dengan konsep web scraping? kalian bisa membaca artikel kami lainnya tentang Kupas Tuntas Web Scraping
Terus mengandalkan proses manual? Sungguh sikap yang disesalkan untuk diadopsi!
Sentimen seperti itu tidak diragukan lagi dapat muncul jika seseorang terus menolak kemajuan otomatisasi.
Seperti yang diartikulasikan sebelumnya, satu manifestasi spesifik otomatisasi adalah web scrapping. Web Scraping didefinisikan sebagai metodologi yang digunakan untuk mengekstrak data dari situs web secara otomatis.
Metodologi ini terbukti sangat menguntungkan untuk sejumlah besar aplikasi, termasuk agregasi informasi, evaluasi pasar, penyelidikan akademik, berita dan pemantauan media sosial, dan bahkan penegakan hukum. Memang, cukup mengesankan, apakah Anda tidak setuju?
Selain itu, web scraping sering digunakan oleh ilmuwan data untuk melakukan analisis sentimen di platform media sosial, memperkirakan fluktuasi saham, menilai dinamika bisnis kompetitif, di antara aplikasi lainnya.
Memang, seseorang tidak boleh meremehkan kemampuan yang diberikan oleh web scraping.
Mari kita terlibat dalam skenario hipotetis. Bayangkan Anda adalah seorang pebisnis yang ingin memantau harga produk pesaing di beberapa platform e-commerce untuk menginformasikan strategi penetapan harga Anda. Bagaimana kedengarannya?
Alih-alih mengunjungi setiap situs web dan memeriksa harga produk secara individual, seseorang dapat memanfaatkan metodologi web scraping untuk secara sistematis mengumpulkan data harga produk dari beberapa platform e-commerce secara bersamaan. Selanjutnya, data ini dapat dianalisis untuk membedakan tren harga dan mengidentifikasi peluang potensial untuk penyesuaian harga yang kompetitif. Cukup mudah bukan?
Perlu dicatat bahwa kita dapat dengan mudah mengembangkan skrip web scraping menggunakan bahasa pemrograman Python. Yang menarik, kami akan melakukan analisis kode untuk memperdalam pemahaman kami tentang proses implementasi Python untuk web scraping.
Apakah Anda siap? Mari kita memulai perjalanan ini.
Implementasi Web Scraping
Dalam sesi ini, kami akan berusaha mengembangkan program otomatisasi dasar yang menggunakan bahasa pemrograman Python untuk tujuan web scraping. Kami akan berusaha untuk mengumpulkan berbagai informasi yang berkaitan dengan kelas yang ditawarkan oleh sebuah kelas pembelajaran, termasuk nama kelas, jam belajar, peringkat, level, deskripsi, jumlah modul, dan angka pendaftaran total.
Mari kita mulai dari import module.
Import Module
Ada banyak python module yang tersedia untuk web scraping, di
antaranya adalah Selenium dan BS4.
Pada baris kode di atas, kita
mengimpor sejumlah kebutuhan supaya proses web scraping bisa jadi lebih lancar,
antara lain:
- webdriver: antarmuka untuk mengotomatisasi
browser web.
- By: untuk menentukan metode pencarian elemen
dalam halaman web, seperti dengan ID, class, dan-lain-lain.
- expected_conditions: berisi kumpulan kondisi
yang digunakan bersama dengan WebDriverWait untuk menunggu hingga kondisi
tertentu terpenuhi sebelum melanjutkan eksekusi script.
- WebDriverWait: untuk menunggu hingga kondisi
tertentu terpenuhi (misalnya, elemen muncul) sebelum melanjutkan eksekusi
script.
- Options: untuk mengatur opsi saat
menjalankan browser Firefox, seperti menjalankannya dalam headless mode
(berjalan terprogram tanpa UI).
- BeautifulSoup: untuk menguraikan dan
mengekstrak data dari dokumen HTML atau XML.
Dengan menggunakan kombinasi
Selenium dan BS4 (BeautifulSoup), kita bisa mengotomatisasi interaksi dengan
web browser (menggunakan Selenium) dan mengekstrak informasi yang diperlukan
dari halaman web (menggunakan BeautifulSoup).
Konfigurasi WebDriver
Selanjutnya adalah kita perlu
mengonfigurasi WebDriver untuk menyesuaikan dengan kebutuhan. Secara singkat,
WebDriver itu adalah antarmuka untuk mengotomatisasi browser web.
Kodenya seperti di bawah ini :
Baris kode di atas merupakan awal
dari sebuah fungsi yang dirancang untuk melakukan web scraping dari situs web
yang diinginkan.
Pertama, kita punya fungsi
bernama scraper untuk memadukan semua proses web scraping.
Fungsi ini menerima satu parameter yaitu url, yang merupakan URL dari halaman
web yang akan di-scrape.
Terus, untuk konfigurasi
WebDriver, kita menentukan opsi agar Selenium menggunakan browser Firefox
dengan mode headless yang berarti browser tidak akan muncul saat proses
scraping dilakukan.Kalau teman-teman simak, kita pakai blok try agar
ketika suatu operasi terjadi kesalahan, kita dapat menangani error tersebut
dengan baik.
Akses Website
Proses selanjutnya adalah
mengakses website yang akan di-scrape. Ini contoh kodenya.
Pertama, kita suruh si WebDriver
(sesi browser) untuk membuka URL yang telah diberikan.
Terus, lagi-lagi kita pakai blok
try untuk menangani skenario di mana Selenium bakal nunggu maksimum 5 detik
sampai dia menemukan elemen dengan ID ‘course-list’. Kalau elemen yang kita
cari ketemu dalam batas waktu yang ditentukan (5 detik dalam kasus ini),
eksekusi script akan dilanjutkan. Kalau nggak, Selenium bakal ngasih
error.
Dengan ini, kode kita sudah
menetapkan pengaturan awal dalam proses scraping dan menunggu hingga halaman
web dimuat sepenuhnya sebelum melanjutkan eksekusi.
Parse HTML
Sekarang kita fokus pada
penggunaan BeautifulSoup untuk menganalisis HTML dari halaman web yang tadi
sudah dimuat oleh Selenium.
Pertama, kita mengambil source
code HTML dari halaman web yang tadi sudah diakses oleh si WebDriver
(Selenium).
Lanjut, source code HTML tadi
diserahkan ke BeautifulSoup untuk diuraikan pakai HTML parser bawaan dari
BeautifulSoup.
Nantinya, kita akan berinteraksi
dengan variabel soup yang merupakan representasi struktur dokumen HTML untuk
mengakses dan memanipulasi elemen-elemen yang diinginkan.
Selanjutnya, kita mendeklarasikan
variabel courses sebagai list kosong. Variabel bakal kita
pakai untuk mengumpulkan nilai-nilai yang akan diekstrak dari halaman web.
Ekstrak Informasi
Sekarang kita coba fokus ke
penggunaan BeautifulSoup untuk mengekstrak informasi spesifik dari elemen HTML
yang telah diuraikan sebelumnya.
Kode di atas diawali dengan
menggunakan BeautifulSoup untuk menemukan semua elemen div yang
punya CSS class ‘col-md-6 mb-3’.
Dari elemen-elemen yang sudah
ditemukan, kita mencari beberapa informasi berikut.
- course_name -> Informasi ini kita
dapatkan lewat cari elemen h5 dengan class ‘course-card__name’ dan
ambil teksnya.
- course_hour -> Kita mencari semua
elemen span dengan atribut class yang sesuai dan mengambil
teksnya.
- course_summary -> Menggunakan
metode select() untuk memilih elemen div dengan
class ‘course-card__summary’, kemudian memilih elemen p di
dalamnya, dan mengambil teksnya.
- course_total_module -> Kode ini
mencari semua elemen div dengan class ‘course-card__info-item’,
kemudian mengambil teks dari elemen span pertama di
dalamnya.
- course_level -> Kode ini mencari
elemen span yang tidak memiliki atribut class dan mengambil teksnya. Ini
adalah tingkat kursus.
- try – except blok pertama -> Blok
try ini mencoba untuk menemukan elemen yang memiliki kelas CSS ‘mr-2’ yang
menunjukkan rating kursus. Jika elemen ditemukan, teksnya akan diambil.
Jika tidak ditemukan, akan menghasilkan IndexError, yang ditangkap oleh
blok except dan rating kursus diatur menjadi string kosong.
- try – except blok kedua -> Blok try
ini mirip dengan yang pertama, tetapi mencari elemen yang memiliki kelas
CSS ‘mr-3’ yang menunjukkan jumlah total siswa dalam kursus. Jika elemen
ditemukan, teksnya akan diambil. Jika tidak ditemukan, akan menghasilkan
pengecualian, dan jumlah total siswa diatur menjadi string kosong.
Kamu bisa lihat bahwa kode di
atas menggunakan berbagai variasi untuk menemukan elemen. Hal ini sengaja untuk
menunjukkan ke teman-teman bahwa cara mencari elemen tidak hanya satu metode,
melainkan banyak.
Penambahan Data
Baris kode berikutnya akan
bertanggung jawab untuk memasukkan data yang telah diekstrak dari setiap kelas
ke dalam variabel courses.
Kamu bisa cermati kode di atas,
kita pakai metode courses.append() buat nambahin data yang
sudah didapatkan sebelumnya ke dalam list courses.
Setelah itu, di dalamnya kita
menggunakan struktur data dalam bentuk dictionary yang berisi
informasi yang telah diekstrak dari suatu kelas, mulai dari nama kelas, jam
belajar, rating, level, deskripsi, jumlah modul, hingga total siswa terdaftar.
Setiap informasi kelas disimpan
dengan format key:value, di mana key mewakili jenis informasi dan
value sebagai representasi nilai dari informasi tersebut.
Dengan kayak gini, tiap kali kita
nemuin kelas lain di halaman itu, informasi terkait kelas tersebut bakal
ditambahkan ke dalam list courses.
Nah, pas proses scraping selesai,
list courses akan berisi semua data yang sudah diekstrak dan
siap buat diproses lebih lanjut. Misalnya, ingin disimpan dalam format JSON
atau digunakan untuk analisis data.
Penutupan Sesi
Setelah berhasil mengambil
berbagai informasi, kita perlu menutup sesi WebDriver yang telah digunakan
untuk scraping dan mengembalikan hasil scraping pada variabel courses.
Sintaks driver.quit() adalah
perintah yang dipakai untuk menutup sesi WebDriver yang telah dibuka
sebelumnya. Metode quit() ini digunakan untuk mengakhiri semua
proses yang terkait dengan sesi WebDriver, termasuk menutup browser window dan
menghapus semua proses yang terkait.
Setelahnya, kita mengembalikan
variabel courses yang berisi data hasil scraping. Dengan kita
tutup sesi WebDriver dan mengembalikan hasil scraping, si fungsi scraper()
sudah menyelesaikan tugasnya. Fungsi ini nantinya dapat dipanggil dari bagian
lain dalam kode Python untuk melakukan scraping dari situs web Dicoding; dan
hasilnya dapat digunakan sesuai kebutuhan.
Penanganan Error
Kita sudah bahas semua blok try,
tentu tidak lengkap kalau tidak ada bagian except untuk
menangani error atau kesalahan yang terjadi selama proses scraping.
Baris kode di atas akan menangkap
semua jenis error atau kesalahan yang bisa saja terjadi selama proses scraping
yang dilakukan pada blok try dan menyimpannya dalam variabel e.
Kemudian, program ini akan
mencetak pesan kesalahan untuk menerangkan apa yang sebenarnya terjadi. Ini
akan membantu kita dalam pemecahan masalah dan memahami sumber masalah saat
proses scraping mengalami kesalahan.
Terakhir, setelah mencetak pesan
error, sesi WebDriver bakalan ditutup. Ini penting buat mastiin kalau semua
sumber daya yang terkait dengan sesi WebDriver, seperti browser dan proses
terkait dihentikan dengan benar.Jadi, kendati terjadi kesalahan selama proses
scraping, program akan berhenti dengan elegan.
Pemanggilan Fungsi Scraper
Setelah sebelumnya kita fokus ke
fungsi scraper() untuk menuliskan teknik dalam melakukan web
scraping, sekarang kita bedah gimana sih cara menggunakan si fungsi scraper()
tadi.
Singkat saja, pada baris kode ini
kita mengimpor module yang dibutuhkan, seperti json untuk memproses data dalam
format JSON.
Lalu, kita mendeklarasikan
variabel bernama url yang berisi URL dari halaman web yang akan di-scrape,
dalam hal ini adalah halaman daftar kelas di Dicoding.
Variabel url digunakan
sebagai argumen saat memanggil fungsi scraper(). Hasil dari proses scraping
kemudian disimpan dalam variabel data.
Terakhir, program ini akan
menyimpan data hasil scraping ke berkas bernama dicoding_data.json.
File ini digunakan untuk menyimpan data hasil scraping dalam format JSON.
Hasil
Waktunya menguji coba! Bila kita
menjalankan script ini tersebut, ia akan menghasilkan berkas dicoding_data.json seperti
berikut.
Selesai!
Penutup
Akhirnya usai juga tutorial
membuat automation sederhana menggunakan bahasa pemrograman python. Kita sudah
berhasil mengumpulkan informasi kelas pembelajaran menggunakan teknik web scraping.
Program automation seperti ini
sangat berguna dalam berbagai kasus penggunaan di industri IT, termasuk untuk
mengumpulkan data dari internet secara otomatis untuk analisis lebih
lanjut.
Sekarang kita jadi tahu nih bahwa
Python tuh nggak cuma bisa membuat aplikasi atau layanan yang canggih, tetapi
juga bisa membantu kita dalam meningkatkan efisiensi dan produktivitas
pekerjaan sehari-hari.
0 Comments