Skip to content

andhit-r/skkni-http-scraper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

📚 SKKNI HTTP Scraper

Python FastAPI Playwright SQLite License CI codecov

SKKNI HTTP Scraper adalah layanan HTTP berbasis FastAPI untuk mengambil data dokumen dan unit kompetensi dari portal resmi SKKNI (Kemnaker), lengkap dengan caching lokal menggunakan SQLite.


🌐 Kebijakan Bahasa

  • 📝 Kode & komentar: ditulis dalam bahasa Inggris
  • 📄 Dokumentasi & README: ditulis dalam bahasa Indonesia
  • 🎯 Tujuan: memudahkan kolaborasi lintas developer (internasional) sekaligus menjaga konteks lokal untuk pengguna

✨ Fitur Utama

  • 🚀 Scraping langsung dari portal SKKNI (dokumen & unit kompetensi).
  • 💾 Cache otomatis ke database lokal (SQLite) untuk menghindari scraping berulang.
  • 🏷 Normalisasi sektor, bidang, sub-bidang ke tabel master terpisah.
  • 📄 Swagger UI & ReDoc untuk dokumentasi API interaktif.
  • 🌐 CORS support untuk integrasi dengan Odoo, n8n, dan front-end lain.
  • Limit paralel scraping & konfigurasi TTL cache.
  • 🔍 Filter force_refresh, include_merged, sektor, dan pagination.

📦 Instalasi

1. Clone Repository

git clone https://github.com/username/skkni-http-scraper.git
cd skkni-http-scraper

2. Buat Virtual Environment & Install Dependencies

python3.12 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

3. Jalankan Server

uvicorn app.main:app --reload

⚙️ Konfigurasi Environment

Buat file .env di root proyek:

DATABASE_URL=sqlite:///./skkni_cache.db
HEADLESS=true
CACHE_TTL_DAYS=30
MAX_CONCURRENCY=2
ALLOWED_ORIGINS=http://localhost:5678,https://yapi.simetri-sinergi.id

📚 API Documentation

Setelah server berjalan, dokumentasi API tersedia di:


🔍 Contoh Request

Ambil 2 dokumen pertama:

curl "http://127.0.0.1:8000/skkni/search-documents?page_from=1&page_to=1&limit=2"

Ambil unit kompetensi dengan filter sektor:

curl "http://127.0.0.1:8000/skkni/search-units?sektor=industri&page_from=1&page_to=1&limit=2"

🛠 Struktur Direktori

skkni-http-scraper/
├── app/
│   ├── api/v1/endpoints/   # Endpoint API
│   ├── core/               # Config & settings
│   ├── db/                 # Model & session DB
│   ├── repositories/       # Logika akses data
│   ├── utils/              # Helper (Playwright, dll)
│   └── main.py              # Entry FastAPI
├── requirements.txt
├── .env.example
├── .gitignore
└── README.md

🧪 Development Tips

  • Gunakan --reload saat development.
  • Untuk debug scraping, set HEADLESS=false di .env.
  • Gunakan CACHE_TTL_DAYS lebih panjang jika scraping lambat.

🏆 Atribusi

  • Data diambil dari SKKNI Kemnaker.
  • Proyek ini dibantu pengembangannya dengan ChatGPT (OpenAI GPT-5).

💡 "Dokumentasi yang baik adalah separuh dari software yang baik" – dibuat dengan ❤️ dan bantuan ChatGPT.


📜 Lisensi

Proyek ini berlisensi MIT – bebas digunakan dan dimodifikasi.

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published