Lompat ke konten utama
←

Python: Objek dan Berkas

Pelajaran 17 dari 21

CSV, JSON, dan modul

Mengurai HTML statis dengan html.parser

Setelah pelajaran ini kamu bisa mengambil isi tabel dan tautan dari halaman HTML yang tersimpan dengan kelas turunan HTMLParser.

  • ±13 menit
  • 3 latihan
  • Diperiksa 28 Okt 2026

Latihan di pelajaran ini butuh akun gratis. Progres, kode, dan catatanmu hanya tersimpan di browser ini. Masuk untuk menyimpannya

Materi

Kadang data yang dibutuhkan hanya tersedia sebagai tabel di halaman web, misalnya daftar harga pemasok. Halaman itu bisa disimpan sebagai berkas .html lalu diurai dengan html.parser dari pustaka standar, tanpa memasang paket apa pun. Caranya: buat kelas turunan HTMLParser, timpa method yang dipanggil parser, lalu serahkan teks HTML ke feed().

from html.parser import HTMLParser

class PengambilJudul(HTMLParser):
    def __init__(self):
        super().__init__()
        self.di_h2 = False
        self.judul = []

    def handle_starttag(self, tag, attrs):
        if tag == "h2":
            self.di_h2 = True

    def handle_endtag(self, tag):
        if tag == "h2":
            self.di_h2 = False

    def handle_data(self, data):
        if self.di_h2 and data.strip():
            self.judul.append(data.strip())

p = PengambilJudul()
p.feed("<H2>Promo</H2><p>isi</p><h2>Kopi &amp; Teh</h2>")
print(p.judul)   # ['Promo', 'Kopi & Teh']

handle_starttag(tag, attrs) dipanggil di setiap tag pembuka, handle_endtag(tag) di setiap tag penutup, dan handle_data(data) untuk teks di antaranya. Dokumentasi html.parser menyebut nama tag dan nama atribut selalu diubah ke huruf kecil, attrs berupa list pasangan (nama, nilai) dengan nilai None untuk atribut tanpa nilai, dan rujukan karakter seperti &amp; otomatis menjadi &. Parser tidak memeriksa apakah tag penutup cocok dengan pembukanya, jadi penanda posisi seperti self.di_h2 diatur sendiri.

Kapan dipakai: halaman statis yang strukturnya jelas dan sudah tersimpan. Pengurai bergantung pada susunan tag halaman, jadi bila susunannya berubah, kodenya ikut diubah; cocokkan hasilnya dengan halaman setiap kali berkas baru diterima.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

Apa yang tercetak?

from html.parser import HTMLParser

class Cetak(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print(tag, attrs)

Cetak().feed('<A HREF="/laporan.pdf" download>Laporan</A>')
Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Lanjutkan ke