Gambar: digitalocean.com
Scraping halaman web dengan
Sebelum mengenal python, saya terbiasa melakukan web scraping dengan menggunakan perintah
Namun teknik di atas tersebut, tidak pernah saya gunakan kembali setelah mengenal python!python beautifulsoup
. Scraping halaman web atau dalam Bahasa Inggrisnya web scraping, adalah teknik yang digunakan untuk mengambil isi
dari sebuah halaman web secara spesifik, misalnya link, teks, gambar, tabel dan lain-lain.Sebelum mengenal python, saya terbiasa melakukan web scraping dengan menggunakan perintah
wget
, grep
dan sed
pada Linux, dengan mengandalkan teknik replace pada sed
dan sedikit bumbu regexp (regular expression).Baca: Sed dan AWK, dua perintah favorit! simple but powerfull
Dengan bantuan library beautifulsoup, pekerjaan mengambil data dari sebuah halaman web menjadi sangat mudah. Pada artikel kali ini saya akan mempraktikkan secara sederhana mengenai cara kerja dari beautifulsoup.
Perlu dicatat, saya menggunakan sistem operasi Linux tepatnya distro Ubuntu 18.04.
Namun tidak perlu khawatir jika anda menggunakan sistem operasi lain, misalnya Windows, karena python merupakan bahasa pemrograman yang bisa berjalan dan mendukung berbagai platform sistem operasi. Selengkapnya mengenai python bisa dibaca disini.
Instalasi BeautifulSoup
Seperti yang telah saya jelaskan pada artikel sebelumnya, bagi sebagian distro Linux umumnya python sudah terinstall secara default. Silahkan cek dengan menggunakan perintah:$ python -V Python 2.7.15rc1
Bagi pengguna Windows, cara instalasinya dapat mengacu pada artikel: Python - Otomatisasi Web Browser dengan Selenium pada Windows 7.
Jika python sudah terinstall, saatnya kita melakukan instalasi beautifulsoup. Kita akan melakukannya menggunakan perintah
pip
.
pip install beautifulsoup4
Cara di atas yaitu kita menginstall BeautifulSoup 4 atau disingkat
bs4
.Catatan: jika
pip
belum terinstall, silahkan jalankan perintah:
sudo apt-get install python-pip
Instalasi Parser
BeautifulSoup mendukung beberapa parser, selain parser HTML standar python itu sendiri yaitu:html.parser
. Parser tesebut antara lain: lxml
, xml
, html5lib
Untuk menginstallnya sama saja, menggunakan perintah:
pip install nama-parser
Seperti yang dikutip dari laman resminya, sangat disarankan untuk menggunakan parser:
lxml
karena parser ini sangat cepat dibanding yang lainnya.Tutorial BeautifulSoup: Scraping Tabel pada Halaman Wikipedia
Sebagai permulaan, kita akan mencoba melakukan web scraping sederhana, yaitu mengambil data dari salah satu tabel pada laman wikipedia berikut: Comparison of programming languages.Jika kita buka link wikipedia tersebut, disana terdapat banyak tabel, dan tugas kita kali ini hanyalah mengambil data dari salah satu tabel yang tersedia pada laman tersebut menggunakan beautifulsoup.
#1 Menentukan Tabel
Tabel biasanya mempunyai identifier baik berupa ID maupun class. Untuk melihatnya silahkan buka alamat: https://en.wikipedia.org/wiki/Comparison_of_programming_languages menggunakan browser, arahkan cursor pada tabel yang dimaksud dan buka tools inspect element seperti gambar di bawah ini.Sekarang lihat pada bagian yang diberi tanda merah, yaitu parameter table id dan table class. Kita hanya perlu salah satu dari itu. Sebagai contoh, dalam artikel ini saya akan menentukan tabel berdasarkan table id.
#2 Membuat Script Python-BeautifulSoup
Setelah menentukan tabel, sekarang kita akan membuat script python sederhana, silahkan salin script di bawah ini dan simpan dengan nama file:wikiTable.py
.
#-*- coding: utf-8 -*- #--------------------------------------- #!/usr/bin/python #--------------------------------------- # Scrape wikipedia Table #--------------------------------------- import urllib2 from bs4 import BeautifulSoup def wikiTable(): # Spesifikasikan alamat url: alamatURL = "https://en.wikipedia.org/wiki/Comparison_of_programming_languages" # Mengakses alamatURL page = urllib2.urlopen(alamatURL) # Memparse alamat diatas menggunakan parser: "lxml" soup = BeautifulSoup(page, 'lxml') # Menemukan tabel yang menjadi target table = soup.find('table', id="Expressiveness") # Melakukan print table dalam bentuk tag HTML print table wikiTable()Eksekusi script tersebut:
python wikiTable1.pyOutput-nya adalah sebagai berikut:
$ python wikiTable.py <table class="wikitable sortable" id="Expressiveness" style="float:right;"> <tr> <th>Language</th> <th>Statements ratio<sup class="reference" id="cite_ref-41"><a href="#cite_note-41">[36]</a></sup></th> <th>Lines ratio<sup class="reference" id="cite_ref-42"><a href="#cite_note-42">[37]</a></sup></th> </tr> <tr> <td>C</td> <td>1</td> <td>1</td> </tr> <tr> <td>C++</td> <td>2.5</td> <td>1</td> </tr> <tr> <td>Fortran</td> <td>2</td> <td>0.8</td> </tr> <tr> <td>Java</td> <td>2.5</td> <td>1.5</td> </tr> <tr> <td>Perl</td> <td>6</td> <td>6</td> </tr> <tr> <td>Smalltalk</td> <td>6</td> <td>6.25</td> </tr> <tr> <td>Python</td> <td>6</td> <td>6.5</td> </tr> </table>
Bisa dilihat, output di atas masih dalam bentuk tag HTML. Bagaimana jika kita hanya ingin mengambil teksnya saja?
Baik, sekarang fokus pada baris kode
print table
, coba kita ganti menjadi print table.text
sehingga baris akhir kode diatas menjadi:
# Melakukan print table dalam bentuk tag HTML print table.text
Jika kita eksekusi kembali script tersebut, maka output-nya adalah sebagai berikut:
$ python wikiTable.py Language Statements ratio[36] Lines ratio[37] C 1 1 C++ 2.5 1 Fortran 2 0.8 Java 2.5 1.5 Perl 6 6 Smalltalk 6 6.25 Python 6 6.5
Baik, saya rasa sebagai pengantar, contoh di atas sudah cukup menggambarkan bagaimana cara kerja dari beautifulsoup. Selanjutnya:
Python: Web scraping dengan BeautifulSoup: print output tabel layaknya tabelHappy coding!
No comments:
Post a Comment
Silahkan gunakan nama asli dalam berkomentar. Profil unknown / anonim tidak akan di-approve! Terima kasih.