Outils

JobHunter

2026 loupix57 Actif
JobHunter

Systeme de scrapping intelligent d'offres d'emploi et d'interim (Indeed, HelloWork, LinkedIn, France Travail, Actual). API FastAPI, Celery, optimise Raspberry Pi.

Technologies

PythonFastAPICelery

Documentation du projet

JobHunter 🎯

Système de scrapping intelligent d'offres d'emploi et d'intérim, optimisé pour Raspberry Pi 3B+ avec Python 3.9.

🚀 Fonctionnalités

  • Scraping multi-sites : Indeed, HelloWork, LinkedIn, France Travail, Actual
  • Déduplication intelligente : Algorithme de similarité fuzzy
  • API REST complète : FastAPI avec documentation automatique
  • Tâches asynchrones : Celery pour le traitement en arrière-plan
  • Monitoring avancé : Métriques système et métier
  • Optimisé RPi : Configuration adaptée aux ressources limitées

🏗️ Architecture

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   Frontend      │    │   API REST      │    │   Scrapers      │
│   (React)       │◄──►│   (FastAPI)     │◄──►│   (Python)      │
└─────────────────┘    └─────────────────┘    └─────────────────┘
                                │
                                ▼
                       ┌─────────────────┐
                       │   PostgreSQL    │
                       │   + Redis       │
                       └─────────────────┘

📋 Prérequis

  • Système : Raspberry Pi OS (64-bit recommandé)
  • Python : 3.9 ou supérieur
  • RAM : 2GB minimum (4GB recommandé)
  • Stockage : 8GB minimum (16GB recommandé)
  • Services : PostgreSQL 12+, Redis 6+

🛠️ Installation rapide

Linux/macOS

Option 1: Avec Conda (recommandé)

# Cloner le projet
git clone <repositoryurl>
cd jobhunter

Installation complète avec conda

./scripts/conda
install.sh

Démarrer l'application

./scripts/condastart.sh

Option 2: Avec venv

# Cloner le projet
git clone <repositoryurl>
cd jobhunter

Installation avec venv

./scripts/install.sh

Démarrer l'application

./scripts/start.sh

Windows

Option 1: Avec Conda (recommandé)

# Cloner le projet
git clone <repositoryurl>
cd jobhunter

Installation complète avec conda

scripts\conda
installwindows.bat

Démarrer l'application

scripts\conda
startwindows.bat

Option 2: Avec venv

# Cloner le projet
git clone <repositoryurl>
cd jobhunter

Installation avec venv

scripts\installwindows.bat

Démarrer l'application

scripts\start
windows.bat

Configuration

# Copier et éditer la configuration
cp env.example .env

Éditer .env avec vos paramètres

L'API sera disponible sur http://localhost:8000

🚀 Démarrage rapide

Scraping d'offres

# Via l'API
curl -X POST "http://localhost:8000/api/v1/scraping/start" \
  -H "Content-Type: application/json" \
  -d '{
    "searchterms": ["développeur python", "data scientist"],
    "location": "Paris",
    "maxpages": 5
  }'

Recherche d'offres

# Lister les offres
curl "http://localhost:8000/api/v1/jobs?search=développeur&location=Paris&limit=10"

Statistiques

curl "http://localhost:8000/api/v1/jobs/stats"

Monitoring

# Santé de l'API
curl "http://localhost:8000/api/v1/health/detailed"

Métriques système

curl "http://localhost:8000/api/v1/monitoring/metrics"

📚 Documentation

🔧 Configuration

Variables d'environnement principales

# Base de données
DATABASEURL=postgresql://jobhunter:password@localhost:5432/jobhunter
REDISURL=redis://localhost:6379/0

API

APIHOST=0.0.0.0 APIPORT=8000 APIWORKERS=2

Scraping

SCRAPING
DELAYMIN=1 SCRAPINGDELAYMAX=3 SCRAPINGCONCURRENTREQUESTS=2

Optimisations RPi

RPI
MODE=true LOWMEMORYMODE=true MAXWORKERS=2

🎯 Sites supportés

| Site | Type | Filtres | |------|------|---------| | Indeed | Emploi généraliste | Localisation, contrat, expérience, salaire | | HelloWork | Emploi français | Localisation, distance, contrat, expérience | | LinkedIn | Réseau professionnel | Localisation, temporel, contrat, expérience | | France Travail | Service public | Localisation, rayon, contrat, expérience | | Actual | Intérim | Localisation, rayon, contrat, expérience |

🔄 Tâches programmées

  • 6h : Scraping quotidien général
  • 8h : Scraping intérim
  • 2h : Nettoyage des données
  • 3h : Déduplication des offres

📊 Monitoring

Métriques système

  • CPU, mémoire, disque
  • Alertes automatiques
  • Logs structurés

Métriques métier

  • Nombre d'offres scrapées
  • Taux de déduplication
  • Qualité des données

🚨 Dépannage

Problèmes courants

  • Erreur de connexion DB
  •    sudo systemctl status postgresql
       
  • Mémoire insuffisante
  •    # Activer le mode basse mémoire
       echo "LOWMEMORYMODE=true" >> .env
       
  • Scraping trop lent
  •    # Augmenter les délais
       echo "SCRAPINGDELAYMIN=2" >> .env
       echo "SCRAPINGDELAYMAX=5" >> .env
       

    Logs

    # Logs de l'application
    tail -f logs/jobhunter.log
    

    Logs de scraping

    tail -f logs/scraping.log

    Logs d'erreurs

    tail -f logs/errors.log

    🔧 Développement

    Structure du projet

    jobhunter/
    ├── app/
    │   ├── api/           # API REST FastAPI
    │   ├── core/          # Configuration et utilitaires
    │   ├── models/        # Modèles de données
    │   ├── scrapers/      # Scrapers pour chaque site
    │   ├── services/      # Services métier
    │   └── tasks/         # Tâches Celery
    ├── docs/              # Documentation
    ├── logs/              # Fichiers de logs
    └── tests/             # Tests unitaires
    

    Ajout d'un nouveau scraper

  • Créer une classe héritant de BaseScraper
  • Implémenter scrapejobs() et parsejoboffer()
  • Ajouter au ScrapingManager
  • Tests

    # Tests unitaires
    pytest tests/
    

    Tests avec couverture

    pytest --cov=app tests/

    📈 Performance

    Optimisations RPi

    • Pool de connexions limité
    • Workers Celery réduits
    • Délais de scraping adaptatifs
    • Monitoring des ressources

    Recommandations

    • Utiliser un SSD pour de meilleures performances
    • Surveiller la température du RPi
    • Configurer des alertes de ressources

    🤝 Contribution

  • Fork le projet
  • Créer une branche feature
  • Commiter les changements
  • Pousser vers la branche
  • Ouvrir une Pull Request
  • 📄 Licence

    Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.

    🆘 Support

    🎉 Remerciements


    JobHunter - Scraping intelligent d'offres d'emploi pour Raspberry Pi 🎯

    Code source

    Projet open source hébergé sur GitHub.

    • 0 étoiles
    • 0 forks
    • Python
    Voir le dépôt GitHub

    Projets suggeres