Pandas Baca HTML

Kita bisa membaca berkas csv, excel, database dan bahkan pdf. Namun jaman now sumber data tak berbatas adalah internet. Dan salah satu bentuk data di internet adalah berkas html. Pandas menyediakan fungsi untuk membaca tabel pada berkas html, kita akan belajar menggunakan fungsi ini.

Kode Lima Detik

import requests
import pandas as pd

# baca hasil unduhan
page1_tables = pd.read_html('Pandas - Sampel.html')

# baca langsung dari url
header = {
    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36",
    "X-Requested-With": "XMLHttpRequest"
}
url = 'https://basangdata.com/klasifikasi-teks-dengan-naive-bayes/'
r = requests.get(url, headers=header)
page2_tables = pd.read_html(r.text)

Latar Belakang

Pandas menyediakan fungsi read_html yang akan merubah tabel pada halaman web menjadi dataframe. Fungsi ini dapat diaplikasikan pada berkas html hasil unduhan atau langsung dari alamat web.


Kode

Kita akan mencoba mengambil data dari dua halaman dari blog ini, yaitu halaman sampel dan klasifikasi teks. Halaman sampel tidak memiliki tabel sehingga fungsi read_html akan menghasilkan ValueError: No tables found, sedang halaman klasifikasi teks memiliki 6 tabel.

Langkah pertama adalah meload library pandas.

import pandas as pd

Halaman Sampel

Unduh manual

Halaman dapat diunduh kemudian hasil unduhan tersebut dibaca menggunakan fungsi read_html.

page1_tables = pd.read_html('Pandas - Sampel.html')

Karena pada halaman sampel tidak terdapat tabel maka pandas akan mengeluarkan pesan kesalahan “No tables found“.

Akses langsung dari url

Seringnya yang kita inginkan adalah mengakses langsung halaman web tujuan, bukan mengunduh manual. Kita dapat mencoba kode di bawah ini.

page2_tables = pd.read_html('https://basangdata.com/pandas-sampel/')

Namun pandas memberikan pesan kesalahan “HTTP Error 403: Forbidden“. Menyiasati ini, kita bisa menggunakan library requests untuk mengunduh halaman yang akan kita gunakan. Hasil unduhan itu yang dibaca oleh read_html.

import requests

header = {
    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36",
    "X-Requested-With": "XMLHttpRequest"
}

url1 = 'https://basangdata.com/pandas-sampel/'
r = requests.get(url1, headers=header)
page3_tables = pd.read_html(r.text)

Halaman klasifikasi teks

Kita akan langsung mengakses menggunakan requests.

url2 = 'https://basangdata.com/klasifikasi-teks-dengan-naive-bayes/'
r = requests.get(url2, headers=header)
page4_tables = pd.read_html(r.text)

Halaman klasifikasi teks memiliki enam tabel.

len(page4_tables)

Tabel pertama memiliki dua baris.

page4_tables[0]

Sesuai dengan tabel pada halaman klasifikasi teks.

Untuk tabel kedua sebagai berikut.

page4_tables[1]

Untuk tabel keenam (terakhir) menggunakan kode berikut.

page4_tables[-1]

Referensi


Cover Image by Boskampi on Pixabay

One Reply to “Pandas Baca HTML”

  1. Pingback: Pandas Baca JSON

Leave a Reply

Your email address will not be published.