OmniJob-Scraper adalah solusi back-end berbasis Python yang dirancang untuk mengotomatiskan pengumpulan data lowongan kerja dari tiga platform utama: Seek, Indeed, dan Jora. Proyek ini berfungsi sebagai pondasi utama (data source) dalam ekosistem pengolahan data lowongan kerja sebelum diproses oleh AI Agent.
- Multi-Platform Support: Scraping data dari Seek, Indeed, dan Jora dalam satu kali jalan.
- Interactive CLI: Prompt interaktif untuk menentukan keyword, lokasi (states), dan tipe pekerjaan.
- Modular Architecture: Kode dipisah berdasarkan platform (
scrapers/) dan fungsi utilitas (prompts,writers) sehingga mudah dikelola. - Customizable Output: Hasil ekstraksi disimpan secara otomatis ke dalam format CSV yang terstruktur.
- Efficient Handling: Dilengkapi dengan pengaturan jumlah halaman (pagination) untuk menghindari limitasi server.
.
├── main.py # Entry point aplikasi (Main Logic)
├── config.py # Konfigurasi global dan settings
├── prompts.py # Modul untuk interaksi input user
├── writers.py # Modul untuk penulisan data ke CSV
├── utils.py # Utility functions dan helper
├── scrapers/ # Folder khusus mesin scraper
│ ├── __init__.py
│ ├── seek_scraper.py # Logic scraping untuk platform Seek
│ ├── indeed_scraper.py # Logic scraping untuk platform Indeed
│ └── jora_scraper.py # Logic scraping untuk platform Jora
├── jobs_all_platforms.csv # Output CSV (semua platform)
├── jobs_jora.csv # Output CSV (Jora)
├── jobs_seek.csv # Output CSV (Seek)
├── jobs_indeed.csv # Output CSV (Indeed)
└── README.md
Pastikan Anda memiliki Python 3.8+ dan install dependensi yang diperlukan:
pip install requests beautifulsoup4 pandasDependensi utama:
requests: Untuk melakukan HTTP requests ke websitebeautifulsoup4: Untuk parsing HTMLpandas: Untuk manipulasi dan export data ke CSV
Jalankan file utama melalui terminal:
python main.pySetelah menjalankan python main.py, Anda akan melihat serangkaian prompt interaktif:
Pilih platform yang ingin di-scrape:
1. Seek
2. Indeed
3. Jora
4. Semua Platform
Masukkan keyword pekerjaan (contoh: Software Engineer, Data Scientist):
> Software Engineer
Masukkan lokasi (contoh: NSW, VIC, QLD):
> NSW
Pilih tipe kontrak (Full-time, Part-time, Contract):
> Full-time
Berapa halaman yang ingin diambil? (1-10 disarankan):
> 3
Data akan disimpan ke file CSV dengan format:
jobs_[platform].csv(per platform)jobs_all_platforms.csv(gabungan semua platform)
Data yang dihasilkan mencakup kolom-kolom berikut:
| Kolom | Deskripsi |
|---|---|
| Job Title | Judul posisi pekerjaan |
| Company Name | Nama perusahaan/employer |
| Location | Lokasi kerja (kota/negara bagian) |
| Job Description | Teks deskripsi pekerjaan (mentah untuk diproses AI) |
| Post Date | Tanggal posting lowongan |
| Job URL | Link menuju halaman detail pekerjaan |
| Employment Type | Tipe kontrak (Full-time, Part-time, Contract) |
Contoh Output (CSV):
Job Title,Company Name,Location,Job Description,Post Date,Job URL,Employment Type
Software Engineer,Tech Corp,Sydney NSW,"Required: Python, Django, REST APIs...",2025-01-10,https://seek.com.au/job/123,Full-time
Data Scientist,AI Solutions,Melbourne VIC,"Required: Machine Learning, SQL, Python...",2025-01-12,https://indeed.com/job/456,Full-timeOmniJob-Scraper (Data Acquisition)
↓
Data Cleaning & Normalization
↓
AI Agent - Skills Extraction & Parafrase
↓
Summarization & Entity Recognition
↓
Looker Visualization & Dashboard
OmniJob-Scraper adalah tahap Data Acquisition. Data mentah yang dikumpulkan oleh scraper ini akan menjadi input bagi:
- Pembersihan teks (Text Cleaning) - Normalisasi format dan penghapusan karakter invalid
- Parafrase deskripsi - Menggunakan LLM untuk standardisasi bahasa
- Ekstraksi entitas keahlian - Mengidentifikasi skills yang relevan
- Analisis sentimen & insights - Untuk dashboard intelligence
"Saya memisahkan modul scraper per platform agar jika salah satu situs melakukan update UI, kita hanya perlu memperbaiki satu file tanpa merusak keseluruhan sistem."
"Meskipun ini alat teknis, saya membangun prompt interaktif agar user non-teknis pun bisa menggunakannya dengan mudah tanpa perlu memahami kode."
"Ini adalah bukti bahwa saya mampu membangun infrastruktur data sendiri sebelum mengimplementasikan model AI, menunjukkan kemampuan end-to-end engineering."
- Periksa koneksi internet Anda
- Beberapa platform mungkin memiliki rate limiting. Tunggu beberapa menit sebelum retry.
# Pastikan semua dependencies terinstall:
pip install -r requirements.txt- Periksa apakah keyword pekerjaan yang dimasukkan valid
- Coba dengan keyword yang lebih umum (misal: "Engineer" instead of "Senior Cloud Engineer")
- Pastikan lokasi yang diinput sesuai dengan format yang diterima platform
- Setiap scraper menggunakan
BeautifulSoupuntuk parsing HTML - Request dilakukan dengan header yang tepat untuk menghindari blocking
- Data di-cache secara lokal untuk menghindari duplicate requests
- File CSV di-generate dengan encoding UTF-8 untuk support character special
Proyek ini dibuat untuk tujuan penelitian dan pembelajaran. Pengguna bertanggung jawab memastikan bahwa penggunaan scraper mematuhi Terms of Service dari masing-masing platform.
Dibuat dengan ❤️ | Magang Project | January 2025