Python: Web Scraping dengan BeautifulSoup - Part 2


Python: Web Scraping dengan BeautifulSoup

Pada artikel sebelumnya, kita telah belajar bagaimana cara kerja dari library BeautifulSoup pada python. Bagi yang belum membacanya silahkan menuju ke artikel di bawah ini:

Python: Web Scraping dengan BeautifulSoup (Pengantar)
Kali ini kita akan melanjutkannya, yaitu bagaimana menghasilkan output tabel layaknya sebuah tabel. Maksudnya, mempunyai rows dan column. Agar lebih jelas, kita lihat kembali output pada artikel sebelumnya 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

Output yang dihasilkan sama sekali tidak terlihat seperti tabel bukan?
Baik, kita buka kembali file wikiTable.py dan edit seperti ini.
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: "html.parser"
    soup  = BeautifulSoup(page, 'lxml')

    # Menemukan tabel yang menjadi target
    table = soup.find('table', id="Expressiveness")

Selanjutnya tambahkan beberapa baris kode di bawah ini:
    # Menemukan table row dari tabel target:
    table_rows = table.find_all('tr')

    # Menemukan td dari setiap table rows:
    for tr in table_rows:
        td = tr.find_all('td')
        row = [i.text for i in td]
        print row

Sehingga kode lengkapnya adalah sebagai berikut:
Sekarang kita eksekusi dan lihat hasilnya.
$ python wikiTable.py 
[]
[u'C', u'1', u'1']
[u'C++', u'2.5', u'1']
[u'Fortran', u'2', u'0.8']
[u'Java', u'2.5', u'1.5']
[u'Perl', u'6', u'6']
[u'Smalltalk', u'6', u'6.25']
[u'Python', u'6', u'6.5']

Penjelasan:
[ ] : pada bagian atas merupakan table head, jadi kosong karena kita hanya mengambil "td", dan tidak mengambil "th" pada baris kode:
td = tr.find_all('td')

Dari output tersebut dengan mudah kita dapat mengolahnya dengan sedikit bantuan perintah replace untuk menjadikannya dokumen CSV, menginsertnya ke dalam database MySQL dan lain-lain.

Yep, Thats it! python membuat semua pekerjaan menjadi mudah.

No comments:

Post a Comment