0Pricing
Python Academy · Pelajaran

Mengurai HTML dengan BeautifulSoup

Telusuri pohon hasil penguraian dan ekstrak data dengan selector.

Mengurai HTML dengan BeautifulSoup adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.

Memasang BeautifulSoup

beautifulsoup4 mengurai HTML dan XML. Gunakan pengurai lxml untuk kecepatan atau html.parser jika ingin tanpa dependensi tambahan.

# pip install beautifulsoup4 lxml
from bs4 import BeautifulSoup

html = "<h1>Hello</h1><p class='intro'>World</p>"
soup = BeautifulSoup(html, "lxml")
print(soup.h1.text)   # Hello

Menemukan Elemen

find(tag) mengembalikan elemen pertama yang cocok. find_all(tag) mengembalikan daftar semua elemen yang cocok.

from bs4 import BeautifulSoup

html = "<ul><li>A</li><li>B</li><li>C</li></ul>"
soup = BeautifulSoup(html, "lxml")
print(soup.find("li").text)       # A
print([li.text for li in soup.find_all("li")])  # [A,B,C]

Selektor CSS

soup.select("css selector") menggunakan sintaks CSS. soup.select_one() mengembalikan kecocokan pertama.

from bs4 import BeautifulSoup

html = '<div class="card"><a href="/p/1">Link 1</a></div>'
soup = BeautifulSoup(html, "lxml")
print(soup.select("div.card a")[0]["href"])   # /p/1
print(soup.select_one("a")["href"])          # /p/1

Mengakses Atribut

Akses atribut tag seperti mengakses kamus: tag["href"], tag.get("class", []).

from bs4 import BeautifulSoup

html = '<a href="https://example.com" class="link external">Click</a>'
soup = BeautifulSoup(html, "lxml")
a = soup.find("a")
print(a["href"])           # https://example.com
print(a.get("class", [])) # ['link', 'external']

Menelusuri Pohon Penguraian

Gunakan .parent, .children, .next_sibling, dan .previous_sibling untuk menelusuri pohon.

from bs4 import BeautifulSoup

html = "<div><h2>Title</h2><p>Para</p></div>"
soup = BeautifulSoup(html, "lxml")
h2 = soup.find("h2")
print(h2.parent.name)         # div
print(h2.next_sibling.text)   # Para (next sibling)

Mengekstrak Teks

tag.get_text(separator=" ", strip=True) mengembalikan semua teks di dalam tag, dengan spasi kosong yang telah dibersihkan.

from bs4 import BeautifulSoup

html = "<div>  <p>Hello</p>  <p> World </p>  </div>"
soup = BeautifulSoup(html, "lxml")
print(soup.div.get_text(separator=" ", strip=True))
# Hello World

Scraping dengan requests + BeautifulSoup

Ambil halaman dengan requests dan urai dengan BeautifulSoup — pasangan klasik untuk scraping.

import requests
from bs4 import BeautifulSoup

url = "https://books.toscrape.com"
r = requests.get(url, timeout=10)
soup = BeautifulSoup(r.text, "lxml")

titles = [h3.find("a")["title"] for h3 in soup.select("article.product_pod h3")]
print(titles[:3])

Menangani URL Relatif

Gunakan urllib.parse.urljoin(base, href) untuk mengubah tautan relatif menjadi URL absolut.

from urllib.parse import urljoin
base = "https://example.com/products/"
href = "../about"
print(urljoin(base, href))   # https://example.com/about

Menangani Encoding

BeautifulSoup mendeteksi encoding secara otomatis, tetapi Anda dapat menentukannya atau menggunakan r.encoding dari requests.

import requests
from bs4 import BeautifulSoup

r = requests.get("https://example.com")
print(r.encoding)   # e.g. utf-8
soup = BeautifulSoup(r.content, "lxml", from_encoding=r.encoding)

Memodifikasi dan Menserialisasi

Modifikasi pohon penguraian dan ubah kembali menjadi HTML dengan str(tag) atau soup.prettify().

from bs4 import BeautifulSoup

html = "<p>Hello <b>world</b></p>"
soup = BeautifulSoup(html, "lxml")
soup.b.decompose()   # remove the <b> tag
print(str(soup.p))   # <p>Hello </p>

Keterbatasan BeautifulSoup

BS4 mengurai HTML statis. BS4 tidak dapat menjalankan JavaScript. Untuk halaman yang dirender oleh JS, gunakan Playwright atau Selenium.

# BeautifulSoup: good for static HTML
# Playwright: for JavaScript-rendered SPAs
# Scrapy: for large-scale crawls with pipelines

# pip install playwright
# playwright install
# from playwright.async_api import async_playwright

Pemeriksaan Singkat

Metode apa yang mengembalikan semua elemen yang cocok dengan selektor CSS di BeautifulSoup?

Ringkasan

BeautifulSoup mengurai HTML menjadi pohon yang dapat ditelusuri. Gunakan find()/find_all() untuk mencari tag, select() untuk selektor CSS, dan get_text() untuk mendapatkan teks yang bersih. Padukan dengan requests untuk halaman statis; gunakan Playwright untuk konten yang dirender oleh JS.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mengurai HTML dengan BeautifulSoup” gratis?

Ya — teks lengkap “Mengurai HTML dengan BeautifulSoup” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Mengurai HTML dengan BeautifulSoup”?

Telusuri pohon hasil penguraian dan ekstrak data dengan selector. Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Python Academy?

Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Mengurai HTML dengan BeautifulSoup” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Permintaan HTTP dengan requests dan httpx
  2. Mengurai HTML dengan BeautifulSoup
  3. Membangun Spider Scrapy
  4. Menangani JavaScript dan Tindakan Anti-Scraping
← Kembali ke Python Academy