أول تجربة لاستخدام API.hh.ru

الإصدار 1.03 // نعم ، لا توجد إصدارات كافية من المقالات حول حبري. تساعد التعليقات في إجراء تحسينات على المقالة.



طاب مسائك.



قبل عامين ، في دعم الباحثين عن الكفاءات (hh.ru) ، طرحت اقتراحًا لعمل خيار بحث إضافي للمهارات الأساسية بالإضافة إلى الخيارات الثلاثة المتاحة (في المسمى الوظيفي ، في اسم الشركة ، في الوصف الوظيفي). قيل لي أن هناك مقترحات لتحسين الخدمة أكثر من الظلام ، لذلك دوسفيدوس. وكانت النتيجة هذا البحث ...



لقد اكتشفت api.hh.ru وقررت البدء في إنشاء محلل في Excel ، بحيث تكون النتيجة أسهل في التحليل بصريًا. رصيف API في github.com/hhru/api جيد ، لذا يمكنك العمل. بادئ ذي بدء ، قررت تحليل مرجع المهارات الأساسية (key_skills). أثناء تمدده ، اتضح أن أول ألف ونصف هي المعيار الذي تم تقديمه افتراضيًا. وبقية الارتباك والتردد ، توقفت عند 13000 وأسقطت العبء. من الواضح أننا بحاجة للذهاب إلى المحلل اللغوي.



لقد توصلت إلى الاستنتاج الأول للبيانات على النحو التالي:



صورة



لم أفكر في كيفية استخدامها. لذلك ، قررت أن أفعل ذلك كما هو الحال في RDBMS ثم عمل جدول محوري للتصفية. والآن الاستنتاج هو:



صورة



ضع الكود فورًا وبالترتيب.



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


يتم قبول طلب GET باللغة السيريلية ، وفي مكون Activex WinHttp.WinHttpRequest في خاصية الخيار (2) - صفحة الرموز utf-8 (65001) ، لذلك قضيت بعض الوقت في "لماذا لا توجد أحرف روسية في الطلب؟" - استبدلت بالرقم 0.



أضيفت وصلة إلى الوظيفة الشاغرة في المخرجات - يبدو أنها فريدة من نوعها



صنع طاولة محورية.



وكما تعلم ، فإن مجموعة المهارات الفريدة من بين ألف وظيفة شاغرة بلغت 1500 ، أي نفس الارتباك والتردد ، بحيث يبدو أن الهدف الرئيسي المتمثل في "العثور على وظائف شاغرة أقرب ما يمكن إلى المهارات المشار إليها في سيرتي الذاتية" قد ابتعد عني.



قررت العد واختيار الأشياء المفضلة لدي مثل هذا:



رأس سبويلر
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



بشكل عام ، سأضيف راتبًا إلى المخرجات وربما شيئًا آخر ، لكن استمرار التشغيل الآلي قد توقف. ثم استخدم المقابض Ctrl + C ، ابحث.



إذا كانت هناك أفكار واقتراحات ، فلنناقشها ونستمر.



ملاحظة 1. لا يمكنني إتقان لغة أجنبية بسرعة إلى مستوى متوسط ​​والحد الأقصى للوظائف الشاغرة الصادرة عن API = 2000 افتراضيًا ، 20 لكل صفحة ، لذا فإن الطلب في الكود جعل هذا.



أخذ محول json من هنا github.com/VBA-tools/VBA-JSON .



لكي يعمل محول JSON:

افتح Excel وقم بتشغيل عرض علامة التبويب Developer

انتقل إلى محرر Visual Basic (في شريط Developer> Visual Basic).

افتح قائمة المراجع: في الأدوات> المراجع ...

تحقق من "Microsoft Scripting Runtime" و "Microsoft VBScript Regular Expressions 5.5". انقر فوق موافق.



الكل. العالم يتغير - أنا أتكيف. وأنت لا تمرض.



ملاحظة:

بشكل عام ، المقالة ليست فنية بقدر ما تتعلق بجوانب البحث عن وظيفة. أود أن أرى تعليقات حول كيف يمكن لبوابات مثل hh تحسين استخدام بعض النقاط.

على سبيل المثال ، فيما يلي المهارات الأساسية التي تمت مناقشتها في المقالة.

إذا كانت الوظائف الشاغرة / السير الذاتية تشير إلى مستوى الكفاءة (مبتدئ ، متوسط ​​، كبير) لكل مهارة - فهذا من شأنه أن يساعد في تحسين عرض الصلة في نتائج البحث.



All Articles