Première expérience d'utilisation d'API.hh.ru

Version 1.03 // Oui, il n'y a pas assez de versionnage des articles sur Habré. Les commentaires aident à apporter des améliorations à l'article.



Bonne après-midi.



Il y a quelques années, dans le soutien du chasseur de têtes (hh.ru), j'ai proposé une option de recherche supplémentaire pour les compétences clés en plus des trois disponibles (dans le titre du poste, dans le nom de l'entreprise, dans la description du poste). On m'a dit qu'il y avait plus de propositions pour améliorer le service que l'obscurité, donc dosvidos. Le résultat est cette recherche ...



J'ai découvert api.hh.ru et j'ai décidé de commencer à créer un analyseur dans Excel, afin que le résultat soit visuellement plus facile à analyser. Le dock API sur github.com/hhru/api convient , vous pouvez donc travailler. Tout d'abord, j'ai décidé d'analyser la référence des compétences clés (key_skills). Pendant qu'il s'étirait, il s'est avéré que les mille et demi premiers étaient la norme introduite par défaut. Et le reste de la confusion et de l'hésitation, je me suis arrêté à 13000 et j'ai laissé tomber la charge. C'est clair, il faut passer à l'analyseur.



J'ai fait la première conclusion des données comme suit:



image



je ne pensais pas comment les utiliser. Par conséquent, j'ai décidé de le faire comme dans un SGBDR puis de créer un tableau croisé dynamique pour le filtrage. Et maintenant, la conclusion est la suivante: établissez



image



immédiatement le code et dans l'ordre.



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&currency_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


La requête GET est acceptée en cyrillique et dans le composant Activex WinHttp.WinHttpRequest dans la propriété Option (2) - la page de codes utf-8 (65001), j'ai donc passé un certain temps sur «pourquoi les lettres ne sont-elles pas russes dans la requête? - remplacé par 0.



Ajout d'un lien vers le poste vacant dans la sortie - il semble être unique.



Fait un tableau croisé dynamique.



Et comme vous le comprenez, un ensemble unique de compétences sur mille postes vacants s'élevait à 1500, soit même confusion et hésitation, de sorte que l' objectif principal de «trouver des postes vacants au plus près des compétences indiquées dans mon CV» semblait s'être éloigné de moi.



J'ai décidé de compter et de choisir mes favoris quelque chose comme ceci:



En-tête de spoiler
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



En général, j'ajouterai un salaire à la sortie et peut-être autre chose, mais la poursuite de l'automatisation est au point mort. Ensuite, utilisez les poignées Ctrl + C, recherchez.



S'il y a des idées et des suggestions, discutons et continuons.



Note 1. Je ne peux pas maîtriser rapidement une langue étrangère à un niveau intermédiaire et le maximum de postes vacants émis par l'API = 2 mille par défaut, 20 par page, donc la demande dans le code l'a fait.



Le convertisseur json a pris ici github.com/VBA-tools/VBA-JSON .



Pour que le convertisseur JSON fonctionne:

Ouvrez Excel et activez l'onglet "Développeur".

Allez dans Visual Basic Editor (dans le ruban Développeur> Visual Basic).

Ouvrez la liste des références: dans le menu Outils> Références ...

Vérifiez Microsoft Scripting Runtime et Microsoft VBScript Regular Expressions 5.5. Cliquez sur OK.



Tout. Le monde change - je m'adapte. Et vous ne tombez pas malade.



PS:

En général, l'article n'est pas tant technique que sur les aspects de la recherche d'emploi. J'aimerais voir des commentaires sur la façon dont les portails comme hh peuvent améliorer l'utilisation de certains points.

Par exemple, voici les compétences clés abordées dans l'article.

Si dans les postes vacants / CV indiquent le niveau de compétence (débutant, intermédiaire, senior) pour chaque compétence - cela aiderait à améliorer l'affichage de la pertinence dans les résultats de recherche.



All Articles