crawling-datas / README.md
dimdimm's picture
fix: rename readme.md -> README.md biar HF Spaces detect config
8614f3b
|
Raw History Blame Contribute Delete
3.24 kB

A newer version of the Gradio SDK is available: 6.32.0

Upgrade
metadata
title: Skripsi Crawling Data
emoji: 🕷️
colorFrom: indigo
colorTo: blue
sdk: gradio
sdk_version: 4.44.0
app_file: app_hf.py
pinned: false

Job Scraper

Proyek ini adalah scraper lowongan kerja yang mengumpulkan data dari LinkedIn dan JobStreet, membersihkannya, lalu menyimpannya ke database Supabase.

Fitur

  • Scraping lowongan dari LinkedIn dan JobStreet
  • Multi-keyword scraping (daftar di run.py)
  • Automasi browser menggunakan Playwright
  • Pembersihan dan normalisasi data sebelum disimpan
  • Ekstraksi otomatis skill, tipe kerja, gaji, dan kontak dari deskripsi
  • Penyimpanan data ke Supabase dengan mekanisme upsert
  • Penjadwalan scraping setiap 24 jam, atau mode --once untuk cron/CI

Setup

  1. Clone repository ini

  2. Buat virtual environment (Python 3.10+):

    python -m venv venv venv\Scripts\activate

  3. Install dependensi:

    pip install -r requirements.txt

  4. Instal browser untuk Playwright:

    playwright install chromium

  5. Salin file .env.example menjadi .env, lalu isi kredensial Supabase:

    cp .env.example .env

    SUPABASE_URL=your_supabase_url SUPABASE_ANON_KEY=your_supabase_anon_key

  6. Jalankan scraper (sekali jalan lalu keluar, cocok untuk cron/CI):

    python run.py --once

    Atau jalankan sebagai service berjalan terus (scrape tiap 24 jam):

    python run.py

Struktur Modul

  • run.py - Entry point, multi-keyword, menjadwalkan scraping dan menyimpan data
  • linkedin.py - Scraping lowongan dari LinkedIn
  • jobstreet.py - Scraping lowongan dari JobStreet
  • browser.py - Konfigurasi Playwright (Chromium headless)
  • base.py - Helper delay, scroll, dan retry navigasi
  • extract.py - Ekstraksi gaji, tipe kerja, dan kontak dari deskripsi
  • normalize.py - Normalisasi format data sebelum disimpan
  • cleaner.py - Validasi dan pembersihan data yang tidak valid
  • supabase_client.py - Koneksi ke Supabase
  • skills_keyword.py - Daftar keyword untuk ekstraksi skill
  • schema.sql - Skema tabel jobs di Supabase

Database

Jalankan schema.sql di Supabase untuk membuat tabel jobs, atau pastikan sudah ada dengan skema berikut:

  • title
  • company
  • location
  • type (Full-time / Part-time / Contract / Internship)
  • salary
  • description
  • skills (jsonb)
  • contact_info
  • url
  • source
  • is_active

Kolom url bersifat unik dan digunakan sebagai konflik untuk upsert.

Deployment

GitHub Actions (gratis, untuk demo skripsi)

Jalankan scraping setiap 24 jam lewat cron workflow, contoh .github/workflows/scrape.yml:

name: scrape
on:
  schedule:
    - cron: "0 3 * * *"
  workflow_dispatch:
jobs:
  run:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - run: pip install -r requirements.txt
      - run: python -m playwright install --with-deps chromium
      - run: python run.py --once
        env:
          SUPABASE_URL: ${{ secrets.SUPABASE_URL }}
          SUPABASE_ANON_KEY: ${{ secrets.SUPABASE_ANON_KEY }}

Atur SUPABASE_URL dan SUPABASE_ANON_KEY di Settings → Secrets and variables → Actions. Alternatif lain: Railway/Render (cron bawaan) atau VPS murah.