Boa tarde.
Há alguns anos, em apoio do headhunter (hh.ru), apresentei uma proposta para fazer uma opção de pesquisa adicional por competências-chave além das três disponíveis (no título do trabalho, no nome da empresa, na descrição do trabalho). Disseram-me que existem mais propostas para melhorar o serviço do que escuridão, por isso dosvidos. O resultado é esta pesquisa ...
Descobri sobre api.hh.ru e decidi começar a fazer um analisador no Excel, para que o resultado seja de alguma forma visualmente mais fácil de analisar. O dock de API em github.com/hhru/api está bom, então você pode trabalhar. Em primeiro lugar, decidi analisar a Referência de competências-chave (key_skills). Enquanto ele estava se alongando, descobriu-se que os primeiros mil e meio são o padrão introduzido por padrão. E o resto da confusão e oscilação, parei em 13.000 e deixei cair a carga. É claro, precisamos ir para o analisador.
Eu fiz a primeira conclusão dos dados da seguinte forma:

Não pensei em como usá-los. Portanto, decidi fazer como em um RDBMS e depois fazer uma tabela dinâmica para filtragem. E agora a conclusão é esta:

imediatamente coloque o código em ordem.
Sub vvv()
Dim http
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
timeout = 2000 'milliseconds
http.setTimeouts timeout, timeout, timeout, timeout
http.Option(2) = 0 ' 65001 utf-8
Dim url_ As String
url0 = "https://api.hh.ru/vacancies?text=NAME:() and DESCRIPTION:(NOT intermediate)&area=1&only_with_salary=true&no_magic=true&salary=100000¤cy_code=RUR&period=30&label=not_from_agency&order_by=publication_time"
http.Open "get", url0
http.send
text = http.responseText
If InStr(text, "errors") > 0 Then
Debug.Print text
Stop
Else
If text <> "" Then
Set qwe = JsonConverter.ParseJson(text)
End If
End If
CountV = qwe("found")
CountP = qwe("pages")
isk = 1
On Error GoTo AfterSk
For pg = 1 To CountP
If pg > 1 Then
url_ = url0 & "&page=" & pg
http.Open "get", url_
http.send
text = http.responseText
Set qwe = JsonConverter.ParseJson(text)
End If
For i = 1 To 20
ii = (pg - 1) * 20 + i
Set Item = qwe("items")(i)
url1 = Item("alternate_url")
ThisWorkbook.Worksheets(2).Cells(ii + isk, 1) = Item("name")
ThisWorkbook.Worksheets(2).Cells(ii + isk, 3) = url1
ThisWorkbook.Worksheets(2).Cells(ii + isk, 1).Font.Bold = True
ThisWorkbook.Worksheets(2).Cells(ii + isk, 1).Font.Size = 14
ThisWorkbook.Worksheets(2).Cells(ii + isk, 3).Font.Bold = True
url_ = Item("url")
url_ = Replace(url_, "?host=hh.ru", "")
http.Open "get", url_
http.send
text = http.responseText
Set vak = JsonConverter.ParseJson(text)
Set keySkills = vak("key_skills")
CountSk = keySkills.Count
If CountSk > 0 Then
For jj = 1 To CountSk
If jj <> 1 Then isk = isk + 1
ThisWorkbook.Worksheets(2).Cells(ii + isk, 1) = Item("name")
ThisWorkbook.Worksheets(2).Cells(ii + isk, 2) = keySkills(jj)("name")
ThisWorkbook.Worksheets(2).Cells(ii + isk, 2).Font.Italic = True
ThisWorkbook.Worksheets(2).Cells(ii + isk, 3) = url1
Next jj
' Else
' ThisWorkbook.Worksheets(2).Cells(2 + (ii - 1) * 3, 1) = vak("description")
' ThisWorkbook.Worksheets(2).Cells(2 + (ii - 1) * 3, 1).Select
' Rows("2 + (ii - 1) * 3:2 + (ii - 1) * 3").EntireRow.AutoFit
End If
AfterSk:
If Err.Number <> 0 Then
'Stop
Resume Next
Err.Clear
End If
DoEvents
Next i
Next pg
Stop
End Sub
A solicitação GET é aceita em cirílico e no componente Activex WinHttp.WinHttpRequest na propriedade Option (2) - a página de código utf-8 (65001), então passei algum tempo em "por que não há letras russas na solicitação?" - substituído por 0.
Adicionado um link para a vaga na saída - parece ser único.
Fez uma mesa dinâmica.
E, como você entende, o conjunto único de habilidades de mil vagas somava 1.500 a mesma confusão e vacilação, de modo que o objetivo principal de “encontrar vagas o mais próximo possível das competências indicadas no meu currículo” parecia ter se afastado de mim.
Decidi contar e escolher meus favoritos algo assim:
Spoiler header
skill;count
Git;546
JavaScript;458
SQL;283
MySQL;255
PostgreSQL;251
;197
Java;196
HTML;186
Linux;177
Python;164
C#;139
HTML5;131
MS SQL;120
REST;82
XML;61
.NET Framework;56
MVC;55
ASP.NET;51
MS SQL Server;49
.NET Core;24
Entity Framework;21
HTTP;20
MS Visual Studio;20
Rest API;18
TCP/IP;15
C ;13
LINQ;12
SQLite;12
WCF;11
Git;546
JavaScript;458
SQL;283
MySQL;255
PostgreSQL;251
;197
Java;196
HTML;186
Linux;177
Python;164
C#;139
HTML5;131
MS SQL;120
REST;82
XML;61
.NET Framework;56
MVC;55
ASP.NET;51
MS SQL Server;49
.NET Core;24
Entity Framework;21
HTTP;20
MS Visual Studio;20
Rest API;18
TCP/IP;15
C ;13
LINQ;12
SQLite;12
WCF;11
Em geral, acrescentarei um salário à produção e talvez algo mais, mas a continuação da automação estagnou. Em seguida, use as alças Ctrl + C, pesquisa.
Se houver ideias e sugestões, vamos discutir e continuar.
Nota 1. Não consigo dominar rapidamente um idioma estrangeiro para um nível intermediário e o máximo de vagas emitidas pelo API = 2 mil por padrão, 20 por página, então a solicitação no código fez isso.
O conversor json tirou daqui github.com/VBA-tools/VBA-JSON .
Para que o conversor JSON funcione:
Abra o Excel e ative a guia "Desenvolvedor"
Vá para o Editor do Visual Basic (na faixa Desenvolvedor> Visual Basic).
Abra a lista de referências: em Ferramentas> Referências ...
Verifique o Microsoft Scripting Runtime e Microsoft VBScript Regular Expressions 5.5. Clique OK.
Tudo. O mundo está mudando - estou me adaptando. E você não fica doente.
PS:
Em geral, o artigo não é tanto técnico quanto sobre aspectos da procura de emprego. Gostaria de ver comentários de como portais como o hh podem melhorar o uso de alguns pontos.
Por exemplo, aqui estão as principais habilidades discutidas no artigo.
Se nas vagas / currículos indicar o nível de proficiência (Iniciante, Intermediário, Sênior) para cada habilidade - isso ajudaria a melhorar a exibição de relevância nos resultados da pesquisa.