ezweb
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())
Instalasi
pip install ezweb
Requirement: Python 3.8+. Dependency (requests, beautifulsoup4, lxml) otomatis terpasang.
Penggunaan Dasar
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, dll
Method Chaining
Gunakan 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.
Semua Method
| 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] |
clean()
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
export()
Format ditentukan otomatis dari ekstensi file:
.json→ seluruh data (title, text, html, links, images, metadata, headings, articles).txt→ hanya teks bersih.html→ hanya HTML
Contoh Output
>>> 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'}
Error Handling
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
Menjalankan Test
pip install -e ".[dev]"
pytest
Roadmap
v0.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
Kontribusi
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.
Lisensi
MIT License — lihat file LICENSE.
Release files for ezwebb 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ezwebb-0.1.0.tar.gz | 17.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ezwebb-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 33.5 kB
Release files / ezwebb-0.1.0.tar.gz
| Download URL | ezwebb-0.1.0.tar.gz |
|---|---|
| Size | 17.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
63a4f42a580bc2e13fdc70c2e759ac9b828ba544bb4f40361f06b093051eef6f
|
|
BLAKE2b-256 checksum How to use checksums |
491142757f53df94af7a65c07c138012b1e50027a978d7cb0b0dd61695b7da5e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 4, 2026.
Transparency logRelease files / ezwebb-0.1.0-py3-none-any.whl
| Download URL | ezwebb-0.1.0-py3-none-any.whl |
|---|---|
| Size | 16.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e09b4087947063991c9df25b52cac5dc18e438247e841a3a20df9ef74eaee7b8
|
|
BLAKE2b-256 checksum How to use checksums |
fed35efc3651746de2bb5c0f54bc4a93434aefba4a2c306b353374e7e1ed7b98
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 4, 2026.
Transparency log