Panduan Linux

Membuat Web Scraper Sederhana dengan curl dan sed

Hai, semua! Pernah nggak sih kalian kepikiran untuk membuat web scraper sendiri? Bagi yang belum tahu, web scraper adalah program yang bisa ngambil data dari sebuah website. Nah, kali ini kita bakal coba bikin web scraper sederhana menggunakan curl dan sed.

Kenapa pake curl dan sed? Karena keduanya adalah command line tools yang keren banget! curl bisa buat request ke website, sedangkan sed buat ngedit teks. Jadi, kita bisa request sebuah halaman web kemudian ambil datanya pakai regex.

Apa yang Dibutuhkan?

  1. Terminal: Pastikan kalian punya terminal atau command prompt.
  2. Curl: Biasanya sudah terinstal di Linux/Mac. Kalo pake Windows, bisa install via Cygwin atau WSL.
  3. Sed: Juga biasanya sudah terinstal di Linux/Mac. Kalo di Windows, sama bisa pake Cygwin atau WSL.

Langkah 1: Mengambil Halaman Web dengan curl

Pertama-tama, kita ambil dulu halaman webnya pake curl. Misalnya, kita mau ambil halaman beranda Google (meskipun sebenarnya Google nggak terlalu menarik buat discrape):

curl https://google.com

Eh, tapi kalo pake itu datanya keluar di terminal, kan? Supaya bisa diolah, kita simpan dulu ke file:

curl https://google.com -o google.html

Nah, sekarang halaman Google udah disimpen di google.html.

Langkah 2: Mencari Data dengan sed

Katakanlah kita mau ambil judul halaman (<title>). Kita bisa pakai sed buat cari teks yang ada di antara <title> dan </title>.

sed -n 's/.*<title>\(.*\)<\/title>.*/\1/p' google.html

Penjelasan regex:

Tapi, pasti di sini ada yang nanya: “Lah, kok judulnya nggak keluar?” Ya karena halaman Google cukup dinamis, <title>-nya mungkin nggak ada di file html yang didownload. Biar lebih menarik, kita coba halaman lain, misalnya Wikipedia Indonesia:

curl https://id.wikipedia.org/wiki/Halaman_Utama -o wiki.html
sed -n 's/.*<title>\(.*\)<\/title>.*/\1/p' wiki.html

Nah, ini pasti keluar judulnya: Halaman Utama - Wikipedia bahasa Indonesia, ensiklopedia bebas.

Langkah 3: Memperbaiki Regex

Tapi, problemnya kalau halamannya besar dan kompleks, kadang sed nggak baca seluruh file karena ada newline. O ya, ada juga kasus khusus di HTML seperti <title > (ada spasi) atau <title data-foo="bar">.

Maka, kita perlu regex yang lebih kuat. Contoh:

sed -n 's/.*<title[^>]*>\([^<]*\)<\/title>.*/\1/p' wiki.html

Penjelasan:

Biar tambah seru, coba ambil semua link di halaman. Biasanya link ada di tag <a> dengan atribut href. Coba ini:

sed -n 's/.*href="\([^"]*\)".*/\1/p' wiki.html

Tapi, ini juga bakal nyedot semua atribut href, bukan cuma di tag <a>. Jadi, harus lebih spesifik:

sed -n 's/.*<a [^>]*href="\([^"]*\)"[ >].*/\1/p' wiki.html

Gimana, cukup mudah kan bikin web scraper sederhana pake curl dan sed? Tentu aja ini cuma buat keperluan sederhana. Kalo butuh yang lebih keren, bisa pakai Python atau tools lain. Tapi, curl dan sed tuh kayak pisau lipat di dunia command line: nggak terlalu fancy tapi selalu kepake!

Jadi, selamat mencoba dan happy scraping! Jangan lupa patuhi robots.txt dan jangan terlalu sering ngescrape biar nggak dibanned! 😉👍

#Bash Script #Linux