ezweb adalah library Python yang membuat web scraping jadi sangat sederhana. Kamu tidak perlu memahami requests, BeautifulSoup, atau parsing HTML — cukup panggil method yang kamu butuhkan.
Cocok untuk:
- 🐣 Pemula Python
- 🤖 Programmer automation
- 💬 Developer bot
- 📊 Data scraper
from ezweb import Website
web = Website("https://example.com")
print(web.title())
print(web.text())
print(web.links())
print(web.images())pip install ezwebbRequirement: Python 3.8+. Dependency (requests, beautifulsoup4, lxml) otomatis terpasang.
from ezweb import Website
web = Website("https://example.com")
web.title() # "Example Domain"
web.text() # teks bersih dari halaman
web.html() # HTML mentah/hasil clean()
web.links() # semua link absolut
web.images() # semua URL gambar absolut
web.headings() # {'h1': [...], 'h2': [...], ...}
web.metadata() # description, og:*, canonical, language, dllGunakan Web (alias dari Website) untuk gaya penulisan yang lebih ringkas:
from ezweb import Web
data = (
Web("https://example.com")
.clean()
.articles()
.export("hasil.json")
)clean(), articles() bisa dirangkai karena mengembalikan objek itu sendiri (self). export() mengembalikan path file yang disimpan.
| Method | Deskripsi | Return |
|---|---|---|
Website(url) |
Membuat objek & langsung fetch halaman | Website |
.title() |
Judul halaman (<title> atau <h1> fallback) |
str |
.text() |
Teks bersih tanpa tag HTML | str |
.html() |
HTML saat ini (mengikuti clean()) |
str |
.links() |
Semua hyperlink (absolut, unik) | List[str] |
.images() |
Semua URL gambar (absolut, unik) | List[str] |
.headings() |
Heading h1–h6 terkelompok |
Dict[str, List[str]] |
.metadata() |
Meta description, Open Graph, canonical, dll | Dict[str, str] |
.clean() |
Hapus script/style/nav/footer/iklan/popup/cookie-banner | Website (chainable) |
.download_images(folder) |
Unduh semua gambar ke folder lokal | List[str] (path lokal) |
.export(path) |
Simpan hasil ke .json / .txt / .html |
str (path) |
.articles() (basic) |
Ekstrak blok artikel (<article> atau kumpulan <p>) |
Website (chainable) |
.tables() (basic) |
Ekstrak tabel HTML | List[List[List[str]]] |
.forms() (basic) |
Ekstrak struktur form | List[Dict] |
.videos() (basic) |
Ekstrak URL video/embed | List[str] |
Menghapus elemen yang biasanya mengganggu:
script,style,iframe,nav,footer,header,aside,form- Popup umum & cookie banner umum
- Elemen dengan class/id seperti
ad,ads,advert,advertisement,banner,sponsor
Format ditentukan otomatis dari ekstensi file:
.json→ seluruh data (title, text, html, links, images, metadata, headings, articles).txt→ hanya teks bersih.html→ hanya HTML
>>> web = Website("https://example.com")
>>> web.title()
'Example Domain'
>>> web.links()
['https://example.com/about', 'https://www.iana.org/domains/example']
>>> web.metadata()
{'description': 'Example Domain page', 'language': 'en'}ezweb menyediakan exception khusus di ezweb.exceptions:
from ezweb import InvalidURLException, RequestFailedException, ParseException
try:
web = Website("bukan-url-valid")
except InvalidURLException as e:
print("URL tidak valid:", e)InvalidURLException— URL tidak valid/malformedRequestFailedException— request gagal (timeout, DNS error, status 4xx/5xx)ParseException— HTML gagal diparse
pip install -e ".[dev]"
pytestv0.1.0 (saat ini)
title(),text(),html(),links(),images(),metadata(),headings()clean(),download_images(),export()- Dukungan dasar
articles(),tables(),forms(),videos()
v0.2.0 (rencana)
articles()lebih pintar (deteksi konten utama ala readability)tables()→ export langsung ke CSV/DataFrameforms()dengan validasi fieldvideos()untuk lebih banyak platform embeddownload()generik (bukan hanya gambar)api()— mode scraping untuk endpoint JSONcache()— cache hasil fetch agar tidak request berulangsession(),cookies(),headers()— kontrol request tingkat lanjut
Pull request sangat diterima! Struktur project ini modular (parser.py, cleaner.py, extract.py, downloader.py, exporter.py) sehingga mudah menambah fitur baru tanpa mengubah API publik Website/Web.
MIT License — lihat file LICENSE.