Senin, 18 Maret 2019

Python: Web Scraping Dengan Beautifulsoup (Pengantar)

 Scraping Halaman Web dengan BeautifulSoup Python: Web Scraping dengan BeautifulSoup (Pengantar)
Gambar: digitalocean.com

Scraping halaman web dengan python beautifulsoup. Scraping halaman web atau dalam Bahasa Inggrisnya web scraping,  yaitu teknik yang dipakai untuk mengambil isi dari sebuah halaman web secara spesifik, contohnya link, teks, gambar, tabel dan lain-lain.

Sebelum mengenal python, saya terbiasa melaksanakan web scraping dengan memakai 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
Namun teknik di atas tersebut, tidak pernah saya gunakan kembali sesudah mengenal python!

Dengan dukungan 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 memakai sistem operasi Linux tepatnya distro Ubuntu 18.04.

Namun tidak perlu khawatir kalau anda memakai sistem operasi lain, contohnya Windows, alasannya yaitu python merupakan bahasa pemrograman yang sanggup berjalan dan mendukung aneka macam platform sistem operasi. Selengkapnya mengenai python sanggup 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 memakai perintah:
$ python -V Python 2.7.15rc1

Bagi pengguna Windows, cara instalasinya sanggup mengacu pada artikel: Python - Otomatisasi Web Browser dengan Selenium pada Windows 7.

Jika python sudah terinstall, saatnya kita melaksanakan instalasi beautifulsoup. Kita akan melakukannya memakai perintah pip.
pip install beautifulsoup4

Cara di atas yaitu kita menginstall BeautifulSoup 4 atau disingkat bs4.
Catatan: kalau 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, memakai perintah:
pip install nama-parser

Seperti yang dikutip dari laman resminya, sangat disarankan untuk memakai parser: lxml alasannya yaitu parser ini sangat cepat dibanding yang lainnya.

Tutorial BeautifulSoup: Scraping Tabel pada Halaman Wikipedia

Sebagai permulaan, kita akan mencoba melaksanakan web scraping sederhana, yaitu mengambil data dari salah satu tabel pada laman wikipedia berikut: Comparison of programming languages.

 Scraping Halaman Web dengan BeautifulSoup Python: Web Scraping dengan BeautifulSoup (Pengantar)

Jika kita buka link wikipedia tersebut, disana terdapat banyak tabel, dan kiprah kita kali ini hanyalah mengambil data dari salah satu tabel yang tersedia pada laman tersebut memakai beautifulsoup.

#1 Menentukan Tabel

Tabel biasanya memiliki identifier baik berupa ID maupun class. Untuk melihatnya silahkan buka alamat: https://en.wikipedia.org/wiki/Comparison_of_programming_languages memakai browser, arahkan cursor pada tabel yang dimaksud dan buka tools inspect element menyerupai gambar di bawah ini.

 Scraping Halaman Web dengan BeautifulSoup Python: Web Scraping dengan BeautifulSoup (Pengantar)

Sekarang lihat pada bab 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 memilih tabel menurut table id.

#2 Membuat Script Python-BeautifulSoup

Setelah memilih tabel, kini kita akan menciptakan 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 memakai parser: "lxml"         soup  = BeautifulSoup(page, 'lxml')          # Menemukan tabel yang menjadi sasaran         table = soup.find('table', id="Expressiveness")                  # Melakukan print table dalam bentuk tag HTML         print table   wikiTable()
Eksekusi script tersebut:
python wikiTable1.py
Output-nya yaitu 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 kalau kita hanya ingin mengambil teksnya saja?
Baik, kini fokus pada baris isyarat print table, coba kita ganti menjadi print table.text sehingga baris simpulan isyarat diatas menjadi:
# Melakukan print table dalam bentuk tag HTML  print table.text

Jika kita sanksi kembali script tersebut, maka output-nya yaitu 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, teladan di atas sudah cukup menggambarkan bagaimana cara kerja dari beautifulsoup. Selanjutnya:

Python: Web scraping dengan BeautifulSoup: print output tabel layaknya tabel
Happy coding!
Sumber https://www.wadagizig.com/
Comments


EmoticonEmoticon

:)
:(
hihi
:-)
:D
=D
:-d
;(
;-(
@-)
:P
:o
:>)
(o)
:p
(p)
:-s
(m)
8-)
:-t
:-b
b-(
:-#
=p~
x-)
(k)