Outil automatisé pour récupérer les offres d'emploi dans un fichier .csv
.
JobFunnel nécessite Python 3.11 ou version ultérieure.
pip install git+https://github.com/PaulMcInnis/JobFunnel.git
En effectuant un grattage et une révision réguliers, vous pouvez éviter le bruit des marchés du travail, même les plus occupés.
Vous pouvez rechercher des tâches avec des fichiers de configuration YAML ou en transmettant des arguments de commande.
Téléchargez la démo settings.yaml en exécutant la commande ci-dessous :
wget https://git.io/JUWeP -O my_settings.yaml
NOTE:
Il est recommandé de fournir le moins de mots-clés de recherche possible (c'est-à-dire Python
, AI
).
JobFunnel prend actuellement en charge les paramètres régionaux CANADA_ENGLISH
, USA_ENGLISH
, UK_ENGLISH
, FRANCE_FRENCH
et GERMANY_GERMAN
.
Exécutez funnel
avec vos paramètres YAML pour remplir votre fichier CSV principal avec les tâches des fournisseurs disponibles :
funnel load -s my_settings.yaml
Ouvrez le fichier CSV maître et mettez à jour le status
par tâche :
Définissez sur interested
, applied
, interview
ou offer
pour refléter votre progression dans le travail.
Définissez sur archive
, rejected
ou delete
pour supprimer un travail de cette recherche. Vous pouvez consulter les tâches « bloquées » dans votre block_list_file
.
Automatisation des recherches
JobFunnel peut être facilement automatisé pour s'exécuter la nuit avec crontab
Pour plus d'informations, consultez le document crontab.
Écrire vos propres Scrapers
Si vous avez un site Web d'emploi pour lequel vous aimeriez écrire un scraper, vous pouvez l'implémenter. Consultez le Base Scraper pour les détails d'implémentation.
Travail à distance
Contournez une expérience utilisateur frustrante lors de la recherche de travail à distance en définissant le paramètre de recherche remoteness
pour qu'il corresponde au niveau souhaité, c'est-à-dire FULLY_REMOTE
.
Ajout de la prise en charge du langage X/site Web d'emploi
JobFunnel prend en charge la suppression des tâches du même site Web d'emploi dans tous les paramètres régionaux et domaines. Si vous souhaitez ajouter la prise en charge, il vous suffira peut-être de définir des en-têtes de session et des chaînes de domaine. Consultez le Base Scraper pour plus de détails sur la mise en œuvre.
Bloquer les entreprises
Filtrez les entreprises indésirables en les ajoutant à votre company_block_list
dans votre YAML ou transmettez-les par ligne de commande en tant que -cbl
.
Filtre d'âge d'emploi
Vous pouvez configurer l'âge maximum des annonces supprimées (en jours) en configurant max_listing_days
.
Examen des tâches dans le terminal
Vous pouvez consulter la liste des tâches dans la ligne de commande :
column -s, -t < master_list.csv | less -#2 -N -S
Retard respectueux
Grattez respectueusement vos offres d'emploi grâce à nos algorithmes de retardement intégrés.
Pour mieux comprendre comment configurer le retard, consultez ce Jupyter Notebook qui décompose l'algorithme étape par étape avec du code et des visualisations.
Récupération de données perdues
JobFunnel peut reconstruire votre CSV maître à partir de votre cache_folder
où se trouvent toutes les données historiques de scraping :
funnel --recover
Exécuté par CLI
Vous pouvez exécuter JobFunnel à l'aide de la CLI uniquement, examinez la structure des commandes via :
funnel inline -h
JobFunnel ne résout pas CAPTCHA. Si, lors du scraping, vous recevez une erreur Unable to extract jobs from initial search result page:
. Ensuite, ouvrez cette URL sur votre navigateur et résolvez le CAPTCHA manuellement.
Pour les contributeurs et les développeurs qui souhaitent travailler sur JobFunnel, cette section vous guidera dans la configuration de l'environnement de développement et des outils que nous utilisons pour maintenir la qualité et la cohérence du code.
Pour commencer, installez JobFunnel en mode développeur . Cela installera toutes les dépendances nécessaires, y compris les outils de développement tels que les utilitaires de test, de linting et de formatage.
Pour installer JobFunnel en mode développeur, utilisez la commande suivante :
pip install -e ' .[dev] '
Cette commande installe non seulement le package dans un état modifiable, mais configure également des hooks de pré-validation pour des contrôles automatiques de la qualité du code.
Les hooks de pré-validation suivants sont configurés pour s'exécuter automatiquement lorsque vous validez des modifications afin de garantir que le code respecte les directives de style et de qualité cohérentes :
Black
: formate automatiquement le code Python pour garantir la cohérence.isort
: Trie et organise les importations selon le style Black.Prettier
: formate les fichiers non Python tels que YAML et JSON.Flake8
: vérifie le code Python pour les violations du guide de style. Bien que le package de pré-commit soit installé lorsque vous exécutez pip install -e '.[dev]'
, vous devez toujours initialiser les hooks en exécutant la commande suivante une fois :
pre-commit install
Les hooks de pré-validation s'exécuteront automatiquement lorsque vous tenterez d'effectuer une validation. Si des problèmes de formatage sont détectés, les hooks les corrigeront (pour Black et isort) ou vous avertiront des violations de style (pour Flake8). Cela garantit que tout le code validé répond aux normes de qualité du projet.
Vous pouvez également exécuter manuellement les hooks de pré-validation à tout moment avec :
pre-commit run --all-files
Ceci est utile pour vérifier l’intégralité de la base de code avant de s’engager ou dans le cadre d’une révision de code plus large. Veuillez corriger toutes les violations du guide de style (ou fournir une raison d'ignorer) avant de vous engager dans le référentiel.
Nous utilisons pytest
pour exécuter des tests et garantir que le code se comporte comme prévu. La couverture du code est automatiquement générée à chaque fois que vous exécutez les tests.
Pour exécuter tous les tests, utilisez la commande suivante :
pytest
Cela exécutera la suite de tests et générera automatiquement un rapport de couverture de code.
Si vous souhaitez afficher un rapport détaillé sur la couverture du code, vous pouvez exécuter :
pytest --cov-report=term-missing
Cela affichera les lignes de code manquées dans la couverture de test directement dans la sortie de votre terminal.