SPSE data scraper untuk pengadaan yang ditampilkan pada https://spse.inaproc.id/
Project description
PySPSE
Paket & CLI untuk crawl data tender/nontender SPSE (https://spse.inaproc.id/)
PySPSE menyediakan CLI dan API Python untuk mengambil data tender dan nontender SPSE Versi Nasional, menyimpan JSON, CSV detail, dan PDF summary.
DISCLAIMER
PySPSE dibuat mandiri, tanpa hubungan dengan pemilik atau pengelola SPSE. Tujuannya: eksperimen teknis, studi data publik, dan mempermudah pemantauan informasi pengadaan. Dilarang membanjiri atau mengganggu layanan SPSE, dilarang dipakai untuk hal yang melanggar hukum, dan segala risiko serta dampak ditanggung pengguna. Rawat sumber daya publik: pakai secukupnya, santun terhadap beban server, dan patuhi aturan yang berlaku.
Quickstart
Pemasangan
python -m venv .venv
.venv\Scripts\activate
pip install pyspse # rilis PyPI
# atau untuk pengembangan lokal
pip install -e .
CLI terpasang sebagai pyspse. Dependensi utama: requests, brotli, beautifulsoup4.
Penggunaan CLI
pyspse tender -T 2025 -L 10 # detail tender 2025 → detail/
pyspse nontender -T 2024 -L 25 # detail nontender 2024
pyspse tender -T 2025 -L 50 -S 100 # paging start 100, 50 baris
pyspse tender -T 2025 -L 10 -M all # plus unduh PDF summary → summary/
pyspse --list-categories # tampilkan slug kategori yang tersedia
pyspse --search-category "padang" # cari kategori berisi padang
pyspse tender -C padang -T 2025 # gunakan kategori padang
Argumen utama:
type:tender|nontender-C, --category: slug kategori (segment URL), defaultnasional--list-categories: tampilkan seluruh kategori lalu keluar--search-category <term>: cari kategori berdasar nama/slug lalu keluar-T, --tahun: tahun data (default: tahun berjalan)-L, --length: jumlah data per halaman (default 25)-S, --start: index awal (default 0)-Q, --search: kata kunci nama paket (opsional)-M, --mode:data(detail→CSV) |all(detail + PDF summary)--log-level:DEBUG|INFO|WARNING|ERROR(defaultINFO)
Tentang kategori
- SPSE punya banyak segmen URL, mis.
https://spse.inaproc.id/padang/lelang. Gunakan-C padangagar request diarahkan ke segmen itu. - Lihat daftar slug:
pyspse --list-categories | head. Cari slug:pyspse --search-category "kemenkeu". - Output otomatis dipisah per kategori:
<kategori>/json,<kategori>/detail,<kategori>/summary.
Penggunaan sebagai Paket
from spse.cookie_manager import SPSECookieManager
from spse.detail_getter import SPSEDetailGetter
from spse.summary_getter import SPSESummaryGetter
from spse.category_resolver import find_by_slug
cookie_manager = SPSECookieManager()
category = "padang" # slug kategori; default "nasional"
cookie_manager.get_spse_session_cookie('tender', category=category)
detail_getter = SPSEDetailGetter(cookie_manager, category=category)
detail = detail_getter.get_detail_data('10092297000', 'tender')
detail_getter.save_details_to_csv([detail], 'tender', 2025)
summary_getter = SPSESummaryGetter(cookie_manager, category=category)
info = summary_getter.get_summary_document('10092297000', 'tender')
summary_getter.download_summary_document(info)
Struktur Proyek
.
├── pyproject.toml # metadata & entry point CLI
├── spse/ # paket utama
│ ├── __init__.py
│ ├── cli.py # CLI (pyspse)
│ ├── config.py # konfigurasi URL/header/path
│ ├── cookie_manager.py # sesi & cookie SPSE
│ ├── json_getter.py # ambil JSON DataTables
│ ├── detail_getter.py # scrap detail → CSV
│ └── summary_getter.py # ambil link & unduh PDF summary
├── <kategori>/json/ # log JSON per kategori (default kategori: nasional)
├── <kategori>/detail/ # CSV detail per kategori
└── <kategori>/summary/ # PDF summary per kategori
Format Output
JSON
- Lokasi:
json/spse_{type}_{tahun}_{timestamp}.json - Isi: respon DataTables SPSE.
CSV Detail
- Lokasi:
detail/spse_{type}_{tahun}_{timestamp}.csv - Delimiter:
; - Kolom:
nomor_pengadaan+ seluruh field pengumuman dalam snake_case,alasan_diulang,scraped_at.
PDF Summary
- Lokasi:
summary/{nomor_pengadaan}.pdf(mode-M all).
Uninstall
pip uninstall pyspse
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyspse-0.1.1.tar.gz.
File metadata
- Download URL: pyspse-0.1.1.tar.gz
- Upload date:
- Size: 24.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd5ab214054915d0639c2dca46778c1150ce8a9197792a5bc4d3a85320d340b6
|
|
| MD5 |
0441e2586c106322d1fad287635bac7d
|
|
| BLAKE2b-256 |
f6e91d411f28dacb259a1628c475cc5281f399909bafe587e04cb684e996de55
|
File details
Details for the file pyspse-0.1.1-py3-none-any.whl.
File metadata
- Download URL: pyspse-0.1.1-py3-none-any.whl
- Upload date:
- Size: 27.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d2eade7f252abaf42ab4f8a0650e0b0fd3c5a32d6bf7d78c904a71c05b33dc4
|
|
| MD5 |
9fe5742f24b7839dbe9389db09d74063
|
|
| BLAKE2b-256 |
283bd24d4759bb5e3fb2d003c94a4a7ae1e264bcbebb98c25950d190a845741d
|