Scraping Teks — Panduan & Contoh
Scraping Teks — Contoh: jagobangunrumah.com
Halaman target berisi materi webinar & iklan acara (judul, daftar materi, pembicara, harga promo). Ringkasan isi halaman ini diambil sebagai contoh target scraping untuk teks publik (judul, bullet list, jadwal, harga). :contentReference[oaicite:0]{index=0}
Topik Utama
- Identifikasi konten yang di-scrape (judul, deskripsi, daftar materi, pembicara, harga).
- Persiapan teknis (cek robots.txt, User-Agent, rate limit).
- Pengambilan data (requests → parsing HTML → ekstraksi teks).
- Penyimpanan & format (CSV / JSON / database).
- Etika & legal (hak cipta, atribusi, terms of service).
Subtopik / Rincian Langkah
1. Analisis Halaman
- Tentukan URL target dan elemen penting: judul halaman, area konten (artikel), bullet list materi, info pembicara, tombol pendaftaran. (Contoh: halaman landing webinar mengandung heading & list seperti pada target). :contentReference[oaicite:1]{index=1}
- Gunakan developer tools (Inspect Element) untuk menemukan selector CSS (mis. <h1>, <article>, <ul>).
2. Cek Kebijakan & Robots
- Periksa
/robots.txt
sebelum scraping. Jika akses diblokir pada path tertentu, jangan scrape. (Etika & hukum). - Jangan mengambil konten berbayar/paywalled atau mencoba melanggar proteksi teknis.
3. Teknik Scraping (Ringkas)
Contoh sederhana berikut aman untuk teks publik — gunakan jeda (delay) dan header User-Agent. Jangan gunakan untuk bypass proteksi.
# Contoh: requests + BeautifulSoup (Python)
import time
import requests
from bs4 import BeautifulSoup
from urllib.robotparser import RobotFileParser
BASE = "https://jagobangunrumah.com/"
# 1) cek robots.txt
rp = RobotFileParser()
rp.set_url(BASE + "robots.txt")
try:
rp.read()
can_fetch = rp.can_fetch("*", BASE)
except Exception:
can_fetch = True # bila robots tidak tersedia, berhati-hati
if not can_fetch:
raise SystemExit("Dilarang oleh robots.txt — hentikan scraping.")
# 2) ambil halaman utama dengan header
headers = {"User-Agent": "MyScraperBot/1.0 (+https://example.com/contact)"}
r = requests.get(BASE, headers=headers, timeout=15)
r.raise_for_status()
soup = BeautifulSoup(r.text, "html.parser")
# 3) contoh ekstraksi: judul & daftar bullet
judul = soup.find(["h1","h2"])
if judul:
print("Judul:", judul.get_text(strip=True))
# contoh mendapatkan semua list item pada konten
for ul in soup.find_all("ul"):
for li in ul.find_all("li"):
print("-", li.get_text(strip=True))
# 4) rate-limit (jangan ban)
time.sleep(2) # jeda antar-request
Catatan teknis singkat
- Gunakan `requests` + `BeautifulSoup` untuk HTML statis. Untuk situs yang memuat konten lewat JavaScript, pertimbangkan library headless seperti Playwright atau puppeteer (tapi patuhi TOS).
- Sertakan header `User-Agent` yang jelas dan link kontak jika bot Anda akan mengakses situs secara rutin.
- Jangan mengirim permintaan paralel berlebihan — gunakan jeda 1–5 detik atau aturan yang wajar.
Etika & Legal (Ringkas)
- Periksa Terms of Service situs. Jika melarang scraping, jangan lakukan.
- Jangan mengumpulkan data pribadi pengguna tanpa izin.
- Berikan atribusi (sumber) bila Anda mempublikasikan hasil ekstraksi.
Penyimpanan & Output
- Simpan hasil pada format yang mudah dipakai: CSV untuk tabel sederhana, JSON untuk struktur nested, atau langsung ke database.
- Tambahkan timestamp & source URL di setiap record untuk audit.
Contoh penggunaan praktis: jika tujuan Anda hanya mengambil teks materi webinar (judul, daftar materi, harga promosi), cukup target elemen <h1>, <ul> dalam artikel—jangan ambil gambar atau asset besar.
Alternatif (lebih baik daripada scraping)
- Cek apakah situs menyediakan RSS atau API untuk mengambil konten secara resmi.
- Jika data untuk tujuan komersial, minta ijin pemilik situs — seringkali mereka bersedia berikan akses data.
Sumber contoh konten & ringkasan halaman: jagobangunrumah.com — konten landing webinar & daftar materi. :contentReference[oaicite:2]{index=2}
Jika Anda mau, saya bisa:
- Menyesuaikan contoh kode untuk mengekstrak selector spesifik dari halaman (saya bisa cek struktur & beri CSS selector yang tepat), atau
- Membuat skrip yang menyimpan hasil ke CSV/JSON, atau
- Membuat checklist legal/teknis yang lebih rinci untuk scraping.
Comments
Post a Comment