Wir analysieren den Lebenslauf von Anwälten auf hh.ru ohne API

Hh.ru ist eine gute Seite, die keine zusätzliche Einreichung benötigt. Die Suche nach Stellenangeboten ist bequem und prosaisch. Manchmal ist es jedoch interessanter, vom Arbeitgeber zu sehen:

  • Wie sieht ein Lebenslauf auf einer gezielten Anfrage aus?
  • wie Sie Ihren eigenen Lebenslauf in der Ausgabe sehen können,
  • Da ein Lebenslauf im Laufe der Zeit „durchhängt“, ist es auch erforderlich, eine Zusammenfassung der Kollegen zu sammeln, um Ministatistiken zu erstellen.

Trotz der Tatsache, dass hh eine eigene API hat und diese gut dokumentiert ist, wird der Zugriff darauf sorgfältig überwacht.

Der Zugang zur API erfolgt wie bei vielen sozialen APIs. Netzwerke - durch vorläufige Registrierung des Antrags im Webkonto des Kontos, in diesem Fall des Arbeitgebers unter hh.ru/employer :



Um dorthin zu gelangen, müssen Sie sich als Arbeitgeber registrieren, Informationen über die Zugehörigkeit der Organisation bestätigen (sie werden Sie anrufen) und dann dem Link folgen: dev.hh.ru Derzeit
ist die Arbeit mit API jedoch noch nicht vollständig verfügbar, da der Antrag auf Registrierung des Antrags auf hh .ru kann bis zu 20 Werktage berücksichtigt werden . Lange.

Daher werden wir ohne API arbeiten und die Funktionen von Python und dem Selen-Framework nutzen.

In Selen füttern wir die URL-Anfrage im Namen des Arbeitgebers, in der es folgende Positionen geben wird:

  • Schlüsselwörter: Anwalt;
  • Berufsfeld: Beliebig;
  • Region: Moskau,
  • Gehalt: Lebenslauf ohne Gehalt nicht anzeigen;
  • Bildung: Es spielt keine Rolle;
  • Staatsbürgerschaft: Beliebig;
  • Arbeitserlaubnis: Beliebig;
  • Alter und Foto: Nur mit Foto;
  • Geschlecht: Es spielt keine Rolle;
  • Sortieren: Nach Änderungsdatum;
  • Ausgabe: Für einen Monat;
  • Auf Seite anzeigen: 100 Lebensläufe.

Trotz der Tatsache, dass es viele Ergebnisse geben wird, werden nur 5.000 Lebensläufe verfügbar sein. Einschränkung für einen frei arbeitenden Arbeitgeber.

Im Code ist dies:

Importieren Sie Module und betreten Sie die Site
from selenium import webdriver
import time,csv
browser = webdriver.Firefox()
time.sleep (5) #   -  
browser.get ('https://hh.ru/employer')
time.sleep (5)


Autorisierung auf der Website
a = browser.find_element_by_css_selector('.bloko-icon_cancel')
a.click()
time.sleep (2)
a=browser.find_element_by_css_selector('div.supernova-navi-item:nth-child(6) > a:nth-child(1)')
a.click()
time.sleep (3)    
emailElem = browser.find_element_by_css_selector('.HH-AuthForm-Login')
emailElem.click()
time.sleep (1)
emailElem.send_keys('example@yandex.ru')    
time.sleep (1)
passElem = browser.find_element_by_css_selector('.HH-AuthForm-Password')
passElem.click()
time.sleep (1)
passElem.send_keys('password')
passElem.submit()
time.sleep (3)


Beispiel@yandex.ru und Passwort - durch die E-Mail des Arbeitgebers ersetzen, Passwort - durch das Passwort.

CSV-Schreibblock
def write_csv(data):
    with open('hh.csv','a',encoding='utf8') as f:
        writer=csv.writer(f)
        writer.writerow((data['name'],
                         data['age'],
                         data['salary'],                         
                         data['stag'],
                         #data['post_job_place'],
                         data['resume_link'],
                         data['photo_big']
                         #data['job_places'],
                         #data['education'],
                         #data['address'],
                         #data['update']
                         )) 


Analyseblock
def resume_get():    
    # 
    a=browser.find_elements_by_class_name('resume-search-item__content-wrapper') # 100 
    #len(a)
    #resume-search-item__description-content -  
    for i in a:
        b=i.find_element_by_class_name('resume-search-item__header')
        name=b.find_element_by_class_name('resume-search-item__name').text # 
        age=b.find_element_by_class_name('resume-search-item__fullname').text # 52 
        salary=b.find_element_by_class_name('resume-search-item__compensation').text # 40000 .
        stag=i.find_elements_by_class_name('resume-search-item__description-content')[0].text # '7   8 '
        resume_link=i.find_element_by_class_name('resume-search-item__name').get_attribute('href') #  
        #post_job_place=i.find_elements_by_class_name('resume-search-item__description-content')[1].text #.  
        #job_places=b.find_elements_by_class_name('resume-search-item__description-content')[1:3] # 
        #education=i.find_elements_by_class_name('resume-search-item__description-content')[-1].text # 
        #photo_small=browser.find_element_by_class_name('resume-userpic').find_element_by_class_name('resume-userpic__photo').get_attribute('src') #   
        try:
            photo_big=i.find_element_by_class_name('bloko-modal-content').find_element_by_tag_name('img').get_attribute('src') #  -
        except:
            photo_big=''

     
        #update=i.find_element_by_class_name('output__addition').text #  
        data={    'name':name,
                  'age':age,
                  'salary':salary,
                  'stag':stag,                  
                  #'post_job_place':post_job_place,
                  'resume_link':resume_link,
                  'photo_big':photo_big
                  #'job_places':job_places,
                  #'education':education,
                  #'address':address,
                  #'update':update
                  }
        #print(data)
        write_csv(data)


50-seitige Paginierungsiteration mit Lebenslauf
resume_get()
x=0

while x!=50:
    browser.get (url+'&page='+str(x+1))
    time.sleep(7)
    resume_get()
    x+=1


* Kommentierte Fragmente für diejenigen, die der Auswahl Informationen hinzufügen möchten.

Nachdem wir das Programm ausgearbeitet und die Ergebnisse in Excel geladen haben, erhalten wir die Tabelle:



Wie finden Sie Ihren Lebenslauf? Am einfachsten ist es, das Alter der Kandidaten zu filtern.

Wie kann man sehen, wo die Zusammenfassung nach dem n-ten Zeitraum erschien? Fahren Sie das Programm durch die n-te Zeit und finden Sie sich wieder. Die Position, an der der Lebenslauf im Diagramm abgelegt wurde, ist die Position in der Ausgabe, da das Programm auf Anfrage nacheinander alle Lebensläufe sammelt.

Schließlich eine kleine grafische Statistik über den Lebenslauf von Anwälten, "Moskauer" (2000 Lebensläufe).





ps. Auf Anfrage von "Corporate + Lawyer" werden 2000 Stellen pro Tag ohne Aktualisierung der Site-Sags fortgesetzt.

Programm - Excel-Tabelle herunterladen
-Herunterladen

All Articles