
Setelah itu menjadi menarik bagi saya, tetapi bagaimana jika Anda mencoba menganalisis lowongan dan menyusun beberapa puncaknya. Cari tahu siapa yang dibayar paling banyak, siapa yang paling laris dan banyak lagi.
Sebagai sumber data, saya menggunakan HeadHunter yang terkenal. Pekerjaan untuk Mei ini dikumpulkan dan diproses. Hanya selama sebulan, karena API tidak memungkinkan Anda untuk mendapatkan lebih banyak.
Pengumpulan data
HeadHunter API memiliki dokumentasi yang sangat baik, yang terletak di repositori . Permintaan harus diajukan ke domain https://api.hh.ru/ dengan User-Agent
terinstal, lebih disukai dari form _/_ (__)
(versi lain dari User-Agent
kadang User-Agent
kadang berfungsi, tetapi jika server tidak menyukai sesuatu, itu akan mengembalikan kesalahan. )
Logika koleksi sangat sederhana, jadi saya mengimplementasikannya di bash menggunakan cURL dan jq . Namun, saya ingin berbagi sedikit nuansa.
Pagination
Untuk mencari lowongan berdasarkan berbagai parameter, ada titik akhir GET /vacancies
.
curl -A 'irenica (https://irenica.com/)' 'https://api.hh.ru/vacancies'
Hasil pencarian akan dibagi menjadi halaman-halaman yang parameter per_page
bertanggung jawab untuk ukuran (20 secara default dan maksimum 100). Anda dapat memilih halaman tertentu dengan menentukan parameter page
(penomoran dimulai dari 0).
Bidang pages
informasi layanan yang dikembalikan dengan lowongan akan menunjukkan jumlah total halaman hasil.
Dengan ini, Anda dapat dengan mudah beralih ke semua halaman:
declare -ii=0 while true; do declare url="https://api.hh.ru/vacancies?per_page=100&page=$i" declare page="$(curl -A 'irenica (https://irenica.com/)' "$url")"
Data pekerjaan penuh
Namun, hasil pencarian hanya berisi sebagian dari data pekerjaan. Untuk mendapatkan semuanya, Anda perlu membuat permintaan terpisah untuk titik akhir formulir GET /vacancies/id_
.
Data pekerjaan parsial terletak di bidang items
dari hasil pencarian. Pertama, kami akan mengumpulkan dari mereka ID lowongan:
declare vacanciesIds="$(echo "$page" | jq -r '.items[].id')"
Kemudian kami meminta informasi lengkap tentang lowongan masing-masing:
for vacancyId in $vacanciesIds; do declare url="https://api.hh.ru/vacancies/$vacancyId" declare vacancy="$(curl -A 'irenica (https://irenica.com/)' "$url")"
Batasi Batas Pencarian
API HeadHunter memiliki satu fitur - tidak peduli berapa banyak yang ditemukan, maksimal 2000 akan dikembalikan. Dalam hal ini, jumlah aktual yang ditemukan juga akan dikembalikan di bidang yang found
dari hasil pencarian. Berkat ini, Anda dapat mengetahui dengan pasti apakah Anda menerima semua data yang diminta, atau jika ada kerugian.
Untuk mengatasi keterbatasan ini, saya datang dengan yang berikut ini. Saat mencari, Anda dapat menentukan jangka waktu kapan lowongan menarik dipublikasikan (melalui date_to
dan date_to
, yang menerima tanggal dalam format ISO 8601). Anda dapat mengambil celah kecil dan memilah-milah semua hasil dalam potongan-potongan tersebut: setelah semua, semakin pendek interval waktu, semakin sedikit lowongan yang Anda kelola untuk mempublikasikannya.
Perlu diperhatikan bahwa lowongan yang dipublikasikan hanya pada bulan lalu dikembalikan. Oleh karena itu, tidak masuk akal untuk mengatur rentang lagi.
Untuk beralih dari periode waktu tertentu, yang terakhir direpresentasikan sebagai waktu Unix:
declare -i startTime=$(date -d '-1 month' +%s) declare -i endTime=$(date -d now +%s) while ((startTime <= endTime)); do declare -i intervalEnd=$((startTime + 60*60)) declare startTimeIso="$(date -d @$startTime +%FT%T)" declare intervalEndIso="$(date -d @$intervalEnd +%FT%T)"
Pemrosesan Gaji
Untuk mengumpulkan statistik, perlu mengelompokkan lowongan menurut kriteria tertentu. Pada bash, ini sudah bermasalah, jadi saya menggunakan Python.
Logika pengumpulan tidak ada yang spesial - akumulasi data dalam array asosiatif, pengurutan dan keluaran dalam CSV. Namun, kembali beberapa nuansa.
Garpu gaji
Perlu dicatat bahwa gaji disajikan dalam bentuk dua angka - minimum dan maksimum, dan salah satu dari mereka mungkin tidak ada.
Karena untuk analisis perlu memiliki satu nomor, saya memutuskan untuk menggunakan batas bawah, dan hanya jika tidak ada, nomor atas.
salary = None if vacancy['salary']: if vacancy['salary']['to']: salary = vacancy['salary']['to'] if vacancy['salary']['from']: salary = vacancy['salary']['from']
Nilai tukar mata uang
Gaji dalam lowongan dapat ditunjukkan dalam mata uang yang berbeda, dan mereka dapat memiliki tarif yang berbeda. API HeadHunter memiliki titik akhir GET /dictionaries
berisi semua nilai yang telah ditentukan sebelumnya. Nilai tukar disajikan dalam bidang currency
. Untuk kenyamanan, akan lebih baik untuk menempatkan daftar mereka dalam array asosiatif, di mana kuncinya adalah kode huruf mata uang:
currencies = {} dictionaries = requests.get('https://api.hh.ru/dictionaries').json() for currency in dictionaries['currency']: currencies[currency['code']] = currency['rate']
Sekarang, selama pemrosesan, akan mudah untuk mengkonversi semua gaji menjadi satu mata uang:
salary /= currencies[vacancy['salary']['currency']]
Akuntansi pajak penghasilan pribadi
Di beberapa lowongan, gaji ditunjukkan sebelum pembayaran pajak penghasilan pribadi, dalam beberapa - setelah. Bidang gross
berbicara tentang opsi tertentu: itu true
dalam kasus pertama dan false
dalam yang kedua.
Saya memutuskan untuk mentransfer semua gaji ke opsi setelah pajak:
if vacancy['salary']['gross']: salary -= salary * 0.13
Analisis Hasil
Dan sekarang saatnya untuk menunjukkan angkanya.
Pekerjaan jarak jauh
Mungkin, banyak dari mereka yang membaca posting ini ingin bekerja di situs yang jauh. Tapi seperti yang Anda lihat, pekerjaan dari rumah di negara kita belum dikutip. Gajinya jauh lebih rendah, jumlah lowongan jauh lebih sedikit. Dan jadi ada sedikit pilihan bagi pelamar.
Dan ini cukup aneh, karena di banyak profesi dan banyak perusahaan (sesuai dengan spesifik tugas) kehadiran seseorang di kantor tidak diperlukan sama sekali. Tetapi ini adalah argumen abadi.
Nama | Gaji rata-rata | Gaji minimum | Gaji maksimum | Nomor |
---|
Staf rumah | 112536 | 10977 | 130.000 | 19 |
Teknologi Informasi, Internet, Telekomunikasi | 55225 | 1000 | 300.000 | 2828 |
Manajemen puncak | 47687 | 9474 | 100.000 | 23 |
Ekstraksi bahan baku | 46579 | 20000 | 90898 | 80 |
Instalasi dan layanan | 45439 | 11874 | 69600 | 9 |
Layanan publik, organisasi nirlaba | 44911 | 20000 | 90.000 | 19 |
Staf yang bekerja | 44218 | 9499 | 67860 | 37 |
Produksi | 42388 | 2372 | 100.000 | 236 |
Konstruksi, real estat | 39896 | 70 | 110000 | 329 |
Transportasi, Logistik | 37662 | 9490 | 100.000 | 223 |

Pelamar Cacat
Namun, ada lebih sedikit jumlah lowongan - untuk para penyandang cacat. Dan ini benar-benar tidak masuk akal - meskipun pengusaha tidak ingin dipindahkan, tetapi di antara mereka yang siap untuk ini, mengapa begitu sedikit yang berpikir tentang penyandang cacat? Jika Anda tidak peduli apa orang itu dalam tiga zona waktu, apa bedanya bagi Anda, apakah dia bisa, misalnya, berjalan?
Banyak dari Anda mungkin akrab dengan penyandang cacat. Aku juga, dan aku bertanya-tanya betapa sulitnya bagi mereka untuk mencari pekerjaan, dan apa yang bisa mereka andalkan.
Nama | Gaji rata-rata | Gaji minimum | Gaji maksimum | Nomor |
---|
Layanan publik, organisasi nirlaba | 69675 | 8700 | 90.000 | 8 |
Manajemen puncak | 48705 | 30000 | 82425 | 15 |
Teknologi Informasi, Internet, Telekomunikasi | 45321 | 4350 | 200.000 | 1050 |
Sains, pendidikan | 45056 | 3158 | 90.000 | 376 |
Pengadaan | 43591 | 15.000 | 80.000 | 9 |
Konstruksi, real estat | 42148 | 22 | 250000 | 210 |
Produksi | 40969 | 10.000 | 130500 | 189 |
Akuntansi, akuntansi manajemen, keuangan perusahaan | 36387 | 2610 | 113100 | 125 |
Pengacara | 34308 | 2610 | 160.000 | 131 |
Keamanan | 33414 | 22 | 90.000 | 178 |

Siswa
Kita semua mulai dengan sesuatu, yaitu dengan pencarian kerja, tanpa pengalaman. Saya memutuskan untuk menilai situasi dengan posisi terbuka untuk kandidat tersebut.
Jumlah lowongan mendorong untuk pekerjaan cepat. Dan saya tidak tahu betapa realistisnya untuk mendapatkan gaji maksimum, tetapi Anda bahkan dapat hidup dengan angka rata-rata.
Nama | Gaji rata-rata | Gaji minimum | Gaji maksimum | Nomor |
---|
Konseling | 62601 | 1500 | 221850 | 2504 |
Konstruksi, real estat | 55855 | 20 | 949989 | 6455 |
Manajemen puncak | 50826 | 11310 | 400.000 | 111 |
Ekstraksi bahan baku | 38192 | 8000 | 100.000 | 328 |
Keamanan | 34617 | 3954 | 100.000 | 5844 |
Kedokteran, Farmasi | 34475 | 450 | 200.000 | 11776 |
Transportasi, Logistik | 33600 | 500 | 150.000 | 8000 |
Sains, pendidikan | 31426 | 1100 | 124510 | 1660 |
Penjualan | 30444 | 1 | 350.000 | 52566 |
Instalasi dan layanan | 30360 | 8264 | 80.000 | 381 |

Keseluruhan teratas
Dan sekarang yang paling menarik: siapa yang dibayar paling tinggi? Diurutkan semua lowongan ditemukan tanpa filter.
Tentu saja, ini manajemen puncak. Siapa yang akan meragukannya.
Fakta yang aneh: jika Anda memperhatikan gaji rata-rata di semua tabel, Anda dapat melihat bahwa itu tidak jauh berbeda.
Nama | Gaji rata-rata | Gaji minimum | Gaji maksimum | Nomor |
---|
Manajemen puncak | 78789 | 150 | 2.000.000 | 2408 |
Ekstraksi bahan baku | 61699 | 8000 | 180.000 | 2302 |
Konseling | 59797 | 1500 | 500.000 | 3762 |
Teknologi Informasi, Internet, Telekomunikasi | 52777 | 26 | 684804 | 25900 |
Konstruksi, real estat | 48587 | 20 | 949989 | 33229 |
Produksi | 42007 | 1 | 261000 | 27269 |
Staf yang bekerja | 41203 | 25 | 200.000 | 43079 |
Bisnis mobil | 38555 | 20 | 824254 | 9269 |
Instalasi dan layanan | 38412 | 25 | 180.000 | 2390 |
Pengadaan | 37846 | 50 | 261000 | 2658 |

Membersihkan wanita
Dan inilah cara termudah: mengapa belajar selama 5 tahun, jika Anda bisa mencuci kantor saja? Di bawah ini adalah hasil dari penyaringan lowongan teratas untuk permintaan "bersih *".
Bagaimana jika Anda masuk ke beberapa kantor dan datang di malam hari selama beberapa jam untuk membersihkan? Jadi kamu bisa hidup dengan cukup mewah. Kami akan menganggap ini hack kehidupan.
Nama | Gaji rata-rata | Gaji minimum | Gaji maksimum | Nomor |
---|
Manajemen puncak | 63000 | 40.000 | 87000 | 8 |
Pemasaran, periklanan, PR | 50.000 | 50.000 | 50.000 | 6 |
Ekstraksi bahan baku | 45000 | 45000 | 45000 | 3 |
Manajemen SDM, pelatihan | 33246 | 7908 | 87000 | 58 |
Akuntansi, akuntansi manajemen, keuangan perusahaan | 32000 | 30000 | 35.000 | 10 |
Keamanan | 31507 | 20000 | 70.000 | 6 |
Penjualan | 29696 | 4737 | 55.000 | 159 |
Konstruksi, real estat | 29024 | 413 | 80.000 | 73 |
Transportasi, Logistik | 24987 | 10990 | 45000 | 26 |
Bisnis mobil | 24465 | 7124 | 45000 | 61 |

Kota Teratas
Akhirnya, saya memutuskan untuk memeriksa jumlah lowongan terbuka berdasarkan kota. Tempat pertama tidak mengejutkan, tetapi kemudian ada posisi aneh dan bahkan tak terduga.
Nama | Nomor |
---|
Moskow | 31137 |
Saint Petersburg | 11745 |
Minsk | 7608 |
Almaty | 4386 |
Kiev | 3398 |
Ekaterinburg | 3182 |
Novosibirsk | 3097 |
Kazan | 3066 |
Ufa | 2980 |
Nizhny Novgorod | 2876 |

Repositori
Semua kode dari artikel, dengan perbaikan dan instruksi, tersedia di repositori .