Implementasi Web Scraping dengan Menggunakan BeautifulSoup dalam 5 Baris Python Code

Making web crawling easier, just only in 5 lines of code in Python using BeautifulSoup!

Ida Novindasari
3 min readJan 9, 2020
Photo by Ilya Pavlov on Unsplash

Dalam artikel ini, kita akan membahas tentang web scraping dan implementasinya dengan menggunakan Library BeautifulSoup Python.

Apa itu web scraping dan apa tujuannya?

Web scraper merupakan sebuah sistem yang digunakan untuk melakukan ekstraksi data dari semi-structured data seperti website. Tujuan dari scraping adalah untuk mendapatkan informasi spesifik yang diperlukan. Contoh dari penggunaan web scraping adalah ekstraksi komentar dari sebuah toko online untuk dilakukan analisis terhadap produk tertentu.

Web scraping sederhana pada halaman wikipedia

Untuk tutorial kali ini, kita akan menggunakan website wikipedia untuk melakukan web scraping. Kita hanya akan mengambil informasi mengenai kategori pada bagian “Categories” yang berada pada akhir setiap artikel wikipedia. Dengan melakukan ekstraksi terhadap “Categories” pada artikel wikipedia ini, nantinya kita dapat menggunakannya untuk analisis lebih lanjut, seperti visualisasi frekuensi dari setiap kategori yang ada pada wikipedia berbahasa Indonesia. Berikut contoh kategori dari link https://en.wikipedia.org/wiki/Wikipedia:

Kita akan mencoba mengekstrak seluruh categories yang dipisahkan dengan “|” pada setiap link wikipedia yang kita akan gunakan sebagai input. Sebelum memulai, pastikan bahwa Library BeautifulSoup sudah terinstall pada komputer yang digunakan. (Jika belum, silahkan ikuti langkah-langkah untuk instalasi sesuai link berikut).

BeautifulSoup sendiri merupakan sebuah Python Library yang digunakan untuk melakukan ekstraksi file dengan format XML atau HTML. Library ini memiliki banyak fungsi yang kita perlukan untuk melakukan ekstraksi informasi dari file kita dan sangat mudah digunakan.

Pertama import seluruh library yang diperlukan. Kali ini, kita juga akan menggunakan menggunakan library urllib untuk melakukan request terhadap website tujuan kita. Library ini tidak perlu diinstall lagi, karena merupakan standard library dari Python sendiri.

from urllib.request import urlopen
from bs4 import BeautifulSoup

Setelah dipastikan bahwa kedua library sudah bisa digunakan, lanjut dengan mengecek apakah kita bisa mengakses website yang akan kita tuju. Oiya, pastikan bahwa komputer kita terhubung dengan internet!

Kemudian, dengan menggunakan salah satu link wikipedia kita akan melakukan request dengan membuka link tersebut dengan menggunakan urlopen yang telah kita import. Sebagai contoh, kita akan melakukan ekstraksi kategori dari halaman wikipedia di wikipedia. Lalu, kita akan melakukan parsing html yang telah didapatkan dengan menggunakan html.parser dari Library BeautifulSoup sendiri.

wiki_link = "https://en.wikipedia.org/wiki/Wikipedia"
html = urlopen(wiki_link).read()
soup = BeautifulSoup(html, 'html.parser')

Dengan menggunakan variable soup ini, kita sudah bisa melakukan ekstraksi terhadap informasi yang kita perlukan. Bagaimana cara kita melakukan ekstraksi terhadap categories untuk setiap link wikipedia? Untuk melakukannya, kita perlu membuka link tersebut pada web browser kita dan melakukan inspect element dengan klik kanan pada “Categories” lalu pilih inspect. Lalu akan muncul window baru disebelah kanan seperti berikut:

Window tersebut akan kita gunakan untuk mencari pattern dari Categories sendiri. Bagian Categories ditandai dengan id = “mw-normal-catlinks”. Id ini dapat kita gunakan untuk mendapatkan seluruh informasi yang berada pada satu tag yang sama. Define variable baru untuk menyimpan tabel Categories yang kita temukan dengan menggunakan fungsi find() dari Library BeautifulSoup.

categories_table = soup.find("div", {"id": "mw-normal-catlinks"})

List dari setiap kategori dapat kita temukan pada bagian <ul>…</ul>. Setelah ekstensi tag tersebut, kita dapat menemukan bahwa setiap kategori disimpan dalam bagian tag <li>…<\li>. Dengan menggunakan pattern ini, kita dapat melakukan iterasi untuk setiap kategori yang ada pada list tersebut. Untuk melakukan iterasi, kita dapat menggunakan fungsi findAll() dari Library BeautifulSoup. Lalu outputkan teks dari setiap kategori yang telah ditemukan.

for each in categories_table.findAll("li"):
print(each.text)

Output yang akan kita dapatkan dari ekstraksi tersebut adalah sebagai berikut:

2001 establishments in the United States
Wikipedia
Advertising-free websites
Internet properties established in 2001
Social information processing
Open-source intelligence
Jimmy Wales

Kita sudah selesai melakukan scraping Categories pada halaman artikel wikipedia. Mudah sekali bukan? Silakan coba juga dengan menggunakan artikel lainnya, seperti https://en.wikipedia.org/wiki/Albert_Einstein. Apakah hasil categories yang sekarang berbeda? Bagaimana dengan menggunakan link artikel berbahasa Indonesia seperti https://id.wikipedia.org/wiki/Teletubbies?

Semoga bermanfaat! Keep learning!

--

--