Ferramenta automatizada para copiar ofertas de emprego em um arquivo .csv
.
JobFunnel requer Python 3.11 ou posterior.
pip install git+https://github.com/PaulMcInnis/JobFunnel.git
Ao realizar raspagens e revisões regulares, você pode eliminar o ruído até mesmo dos mercados de trabalho mais movimentados.
Você pode procurar jobs com arquivos de configuração YAML ou passando argumentos de comando.
Baixe a demonstração settings.yaml executando o comando abaixo:
wget https://git.io/JUWeP -O my_settings.yaml
OBSERVAÇÃO:
Recomenda-se fornecer o mínimo possível de palavras-chave de pesquisa (ou seja, Python
, AI
).
JobFunnel atualmente suporta localidades CANADA_ENGLISH
, USA_ENGLISH
, UK_ENGLISH
, FRANCE_FRENCH
e GERMANY_GERMAN
.
Execute funnel
com seu YAML de configurações para preencher seu arquivo CSV mestre com trabalhos de provedores disponíveis:
funnel load -s my_settings.yaml
Abra o arquivo CSV mestre e atualize o status
por trabalho:
Defina como interested
, applied
, interview
ou offer
para refletir sua progressão no trabalho.
Defina como archive
, rejected
ou delete
para remover uma vaga desta pesquisa. Você pode revisar trabalhos 'bloqueados' em seu block_list_file
.
Automatizando pesquisas
JobFunnel pode ser facilmente automatizado para ser executado todas as noites com o crontab
Para obter mais informações, consulte o documento crontab.
Escrevendo seus próprios raspadores
Se você tem um site de empregos para o qual gostaria de escrever um scraper, fique à vontade para implementá-lo. Revise o Base Scraper para obter detalhes de implementação.
Trabalho Remoto
Evite uma experiência frustrante do usuário que procura trabalho remoto definindo o parâmetro de pesquisa remoteness
para corresponder ao nível desejado, ou seja, FULLY_REMOTE
.
Adicionando suporte para linguagem X/site de empregos
JobFunnel oferece suporte à extração de empregos do mesmo site de empregos em localidades e domínios. Se você estiver interessado em adicionar suporte, talvez seja necessário apenas definir cabeçalhos de sessão e strings de domínio. Revise o Base Scraper para obter mais detalhes de implementação.
Bloqueio de empresas
Filtre empresas indesejadas adicionando-as à sua company_block_list
no seu YAML ou passe-as pela linha de comando como -cbl
.
Filtro de idade do trabalho
Você pode configurar a idade máxima das listagens extraídas (em dias) configurando max_listing_days
.
Revendo empregos no Terminal
Você pode revisar a lista de tarefas na linha de comando:
column -s, -t < master_list.csv | less -#2 -N -S
Atraso respeitoso
Raspe respeitosamente seus anúncios de emprego com nossos algoritmos de atraso integrados.
Para entender melhor como configurar o atraso, confira este Jupyter Notebook que detalha o algoritmo passo a passo com código e visualizações.
Recuperando Dados Perdidos
JobFunnel pode reconstruir seu CSV mestre a partir de sua cache_folder
onde todos os dados históricos de raspagem estão localizados:
funnel --recover
Executando por CLI
Você pode executar JobFunnel usando apenas CLI, revise a estrutura de comando por meio de:
funnel inline -h
JobFunnel não resolve CAPTCHA. Se, durante a extração, você receber um Unable to extract jobs from initial search result page:
erro. Em seguida, abra essa url no seu navegador e resolva o CAPTCHA manualmente.
Para contribuidores e desenvolvedores que desejam trabalhar no JobFunnel, esta seção irá guiá-lo na configuração do ambiente de desenvolvimento e nas ferramentas que usamos para manter a qualidade e consistência do código.
Para começar, instale o JobFunnel no modo de desenvolvedor . Isso instalará todas as dependências necessárias, incluindo ferramentas de desenvolvimento, como utilitários de teste, linting e formatação.
Para instalar o JobFunnel no modo de desenvolvedor, use o seguinte comando:
pip install -e ' .[dev] '
Este comando não apenas instala o pacote em um estado editável, mas também configura ganchos de pré-confirmação para verificações automáticas de qualidade do código.
Os ganchos de pré-confirmação a seguir são configurados para serem executados automaticamente quando você confirma alterações para garantir que o código siga diretrizes consistentes de estilo e qualidade:
Black
: formata automaticamente o código Python para garantir consistência.isort
: Classifica e organiza as importações de acordo com o estilo Black.Prettier
: formata arquivos não-Python, como YAML e JSON.Flake8
: verifica o código Python em busca de violações do guia de estilo. Embora o pacote pré-commit seja instalado quando você executa pip install -e '.[dev]'
, você ainda precisa inicializar os ganchos executando o seguinte comando uma vez:
pre-commit install
Os ganchos de pré-commit serão executados automaticamente quando você tentar fazer um commit. Se algum problema de formatação for encontrado, os ganchos irão corrigi-lo (para Black e isort) ou avisar sobre violações de estilo (para Flake8). Isso garante que todo o código comprometido atenda aos padrões de qualidade do projeto.
Você também pode executar manualmente os ganchos de pré-confirmação a qualquer momento com:
pre-commit run --all-files
Isso é útil para verificar toda a base de código antes de confirmar ou como parte de uma revisão de código mais ampla. Corrija todas as violações do guia de estilo (ou forneça um motivo para ignorar) antes de enviar para o repositório.
Usamos pytest
para executar testes e garantir que o código se comporte conforme o esperado. A cobertura de código é gerada automaticamente sempre que você executa os testes.
Para executar todos os testes, use o seguinte comando:
pytest
Isso executará o conjunto de testes e gerará automaticamente um relatório de cobertura de código.
Se quiser ver um relatório detalhado de cobertura de código, você pode executar:
pytest --cov-report=term-missing
Isso exibirá quais linhas de código foram perdidas na cobertura do teste diretamente na saída do seu terminal.