Procura ofertas de trabalho no linkedin por uma entrada (keywords) e tenta localizar algumas keywords (não inclui sobreposição, então se tem uma keyword ocorrendo dentro de outra só a maior é contabilizada), vindas de um banco de dados, no texto. Há duas variações: uma que usa uma tabela com keywords que serão as únicas aceitas (se um post conter outra ele é descartado) e outra que usa um dataset de posts com suas keywords e a sua nota, de 1 (muito ruim) a 5 (muito bom), baseada somente nessas keywords, que serão usadas em um classificador.
- python3 -m venv env
- source ./env/bin/activate ou \env\Scripts\activate no windows
- pip install -r requirements.txt
-
abra o terminal e insira: docker compose up
-
edite o arquivo params.json na pasta /input
{ "username" : "thiago.com", "password" : "1234", "keywords" : ["c++", "python", "javascript"], "function" : [], "sortBy" : "R", "locationUnion" : 103658898, "populatedPlace" : [106701406, 100177287, 101236820, 102872198, 105272189], "experience" : [2, 3], "limit" : [10, 10, 10], "companies" : [], "discardCompanies" : [18846814, 234280], "workplaceType" : [1, 2, 3], "distance" : 25, "listed_at" : 31536000, "output" : "jobs", "cutoff" : 4, "search" : "simple" }
Sendo:
- username: o email do seu usuário (melhor que use um novo)
- password: a senha do seu usuário
- keywords: lista com as entradas da busca (o que vai ser colocado na barra de pesquisa)
- limit: limite no número de posts da entrada que está na mesma posição em keywords (caso seja -1 não é limitado)
- function: id's das funções que serão selecionadas. Para encontrar uma específica: pesquise uma vaga, clique em Todos os filtros, selecione uma função e copie o valor do atributo f_F na caixa de url
- sortBy: R é para posts relevantes e DD para recentes
- locationUnion: id da região para encontrar a vaga (país, cidade, estado, etc). Para encontrar o valor: pesquise a vaga usando o local e copie o valor do parâmetro geoId na caixa de url.
- populatedPlace: lista com os id's das sub-regiões. Para encontrar uma sub-região: pesquise uma vaga com a região escolhida, clique em todos os filtros, selecione uma das sub-regiões em Localidade e copie o valor do parâmetro f_PP na caixa de url.
- experience: 1 (estágio), 2 (assistente), 3 (júnior), 4 (pleno/senior), 5 (diretor) e 6 (executivo)
- discardCompanies: lista com os id's das empresas que devem ser descartadas. Para encontrar de uma empresa espacífica: vá na página da empresa, pesquise uma vaga e copie o valor do atributo f_C na caixa de url.
- companies: lista com os id's da empresas alvos. Para encontrar de uma empresa espacífica: vá na página da empresa, pesquise uma vaga e copie o valor do atributo f_C na caixa de url.
- workplaceType: 1 (Presencial), 2 (Remoto), 3 (Híbrido)
- distance: raio da busca (default é 25)
- listed_at: número de segundos desde a publicação
- output: arquivo csv com os dados dos jobs posts encontrados e ficará na pasta /output
- search: simple se usa a tabela skills.csv que está na pasta /input que contém algumas keywords cadastradas em data/keywords.json juntamente com o seu peso ou se usa o dataset de exemplos cadastradas em data/posts.json
- cutoff: se search é "simple", então só aceita se a soma dos pesos das keywords truncado para inteiro presente no texto não é menor que cutoff, senão se é "ml" todos os posts do banco de dados com peso maior ou igual a cutoff são os únicos exemplos que podem ser aceitos (todos os outros não são aceitos) no classificador
-
abra o terminal e insira: python3 bot.py
-
espere terminar e abra o arquivo de saída (definido como "output" em params.json) na pasta output. Ele contém algumas informações do post:
- urn_id: id do post
- jobtitle: título do post
- url: url do post
- score: score do post (baseado nas keywords)
- skills: lista com as skills encontradas
- company: nome da empresa
- company_urn_id: id da empresa
- location: localização
- listedAt: tempo em segundos desde a publicação
- company_url: url da página da empresa no linkedin
- workPlaceType: lista com os modos de trabalho
- applyMethod: url da página de aplicação da empresa
Para construir o arquivo linkedin.sql: vá em data, abra o terminal e digite python3 sql_builder.py
Na pasta /data há alguns arquivos .json com dados para o banco de dados:
- keywords.json: com as keywords e suas variações aceitas (que serão usadas para identificar a keyword) com o seguinte formato:
"javascript" : ["javascript", "js", "java script"]
- correlations.json: com as keywords e os conhecimentos necessários para possuí-la:
"pyspark" : ["spark", "python"]
- posts.json: com as informações de algum post:
{
"title" : "PontoTel - Desenvolvedor Back End Jr (Remoto)",
"weight" : 3,
"keywords" : [
"backend",
"jr",
"javascript",
"vuejs",
"html",
"css",
"git"
]
}