Erste Erfahrungen mit API.hh.ru

Version 1.03 // Ja, es gibt nicht genügend Versionierung von Artikeln über Habré. Kommentare helfen dabei, den Artikel zu verbessern.



Guten Tag.



Vor ein paar Jahren habe ich zur Unterstützung des Headhuntern (hh.ru) einen Vorschlag unterbreitet, zusätzlich zu den drei verfügbaren (in der Berufsbezeichnung, im Firmennamen, in der Stellenbeschreibung) eine zusätzliche Suchoption für Schlüsselqualifikationen zu erstellen. Mir wurde gesagt, dass es mehr Vorschläge zur Verbesserung des Service gibt als Dunkelheit, also Dosvidos. Das Ergebnis ist diese Forschung ...



Ich habe von api.hh.ru erfahren und beschlossen, einen Parser in Excel zu erstellen, damit das Ergebnis visuell leichter zu analysieren ist. Das API- Dock unter github.com/hhru/api ist in Ordnung, sodass Sie arbeiten können. Zunächst habe ich mich entschlossen, die Key Skills Reference (key_skills) zu analysieren. Während er sich streckte, stellte sich heraus, dass die ersten tausendeinhalb der Standard sind, der standardmäßig eingeführt wurde. Und der Rest der Verwirrung und des Wackelns blieb ich bei 13.000 stehen und ließ die Ladung fallen. Es ist klar, wir müssen zum Parser gehen.



Ich habe die ersten Schlussfolgerungen aus den Daten wie folgt gezogen:



Bild



Ich habe nicht darüber nachgedacht, wie ich sie verwenden soll. Daher habe ich beschlossen, es wie in einem RDBMS zu machen und dann eine Pivot-Tabelle zum Filtern zu erstellen. Und jetzt lautet die Schlussfolgerung:



Bild



Legen Sie den Code sofort und in der richtigen Reihenfolge an.



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


Die GET-Anforderung wird in kyrillischer Sprache und in der Activex-Komponente WinHttp.WinHttpRequest in der Option Option (2) - der utf-8-Codepage (65001) - akzeptiert. Daher habe ich einige Zeit mit "Warum sind keine russischen Buchstaben in der Anforderung enthalten?" - durch 0 ersetzt. Es wurde



ein Link zur freien Stelle in der Ausgabe hinzugefügt - es scheint eindeutig zu sein.



Machte einen Pivot-Tisch.



Und wie Sie verstehen, belief sich ein einzigartiger Satz von Fähigkeiten aus tausend offenen Stellen auf 1500, d. H. die gleiche Verwirrung und Schwankung, so dass sich das Hauptziel, "freie Stellen so nah wie möglich an den in meinem Lebenslauf angegebenen Fähigkeiten zu finden" , von mir entfernt zu haben.



Ich habe mich entschlossen, meine Favoriten so zu zählen und auszuwählen:



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



Im Allgemeinen werde ich der Ausgabe ein Gehalt hinzufügen und vielleicht noch etwas anderes, aber die Fortsetzung der Automatisierung ist ins Stocken geraten. Verwenden Sie dann die Ziehpunkte Strg + C, suchen.



Wenn es Ideen und Vorschläge gibt, lassen Sie uns diskutieren und fortfahren.



Anmerkung 1. Ich kann eine Fremdsprache nicht schnell auf ein mittleres Niveau beherrschen, und die maximale Anzahl von Stellenangeboten, die von der API vergeben werden, beträgt standardmäßig 2 Tausend, 20 pro Seite. Die Anfrage im Code hat dies also gemacht.



Der JSON-Konverter hat von hier aus github.com/VBA-tools/VBA-JSON übernommen .



Damit der JSON-Konverter funktioniert:

Öffnen Sie Excel und aktivieren Sie die Anzeige der Registerkarte Entwickler. Wechseln

Sie zum Visual Basic-Editor (in der Multifunktionsleiste Entwickler> Visual Basic).

Öffnen Sie die Referenzliste: im Menü Extras> Referenzen ...

Überprüfen Sie die Microsoft Scripting Runtime- und Microsoft VBScript Regular Expressions 5.5. OK klicken.



Alle. Die Welt verändert sich - ich passe mich an. Und du wirst nicht krank.



PS:

Im Allgemeinen ist der Artikel weniger technisch als vielmehr über Aspekte der Jobsuche. Ich würde gerne Kommentare dazu sehen, wie Portale wie hh die Verwendung einiger Punkte verbessern können.

Hier sind zum Beispiel die Schlüsselqualifikationen, die im Artikel besprochen werden.

Wenn in offenen Stellen / Lebensläufen das Kompetenzniveau (Anfänger, Mittelstufe, Senior) für jede Fähigkeit angegeben wird, würde dies dazu beitragen, die Anzeige der Relevanz in den Suchergebnissen zu verbessern.



All Articles