logo proxyscrape gelap

Web Scraping For Job Postings – An Ultimate 2024 Guide

Python, Mengikis, Jan-04-20235 menit baca
Web Scraping untuk lowongan pekerjaan adalah jalan pintas alternatif bagi pencari kerja untuk membuat database lowongan pekerjaan saat ini. Randstad mengatakan bahwa rata-rata pencarian kerja dapat berlangsung selama lima hingga enam bulan, dari saat lamaran dibuat hingga posisi terisi. Bagaimana jika Anda memiliki solusi yang dapat mengurangi beban Anda dalam menjelajahi semua portal lowongan kerja dan memilih lowongan yang sesuai dengan Anda? 

Artikel ini akan membawa Anda dalam perjalanan menjelaskan cara melakukan web scraping untuk lowongan pekerjaan. Jadi, Anda sedang berada di pasar kerja dan mencoba mencari pekerjaan terbaik. Tetapi Anda ingin bermain lebih cerdas dan tidak lebih keras. Mengapa tidak membuat web scraper untuk mengumpulkan dan mengurai lowongan pekerjaan untuk Anda. Setelah Anda mengaturnya, ini akan memberi Anda kekayaan data dalam format yang rapi, sehingga Anda tidak perlu memeriksanya secara manual berulang kali. Mari kita mulai.

Apa Itu Web Scraping Untuk Lowongan Pekerjaan?

Web scraping untuk lowongan pekerjaan adalah solusi yang secara otomatis mengumpulkan data dari berbagai portal pekerjaan dan mengurangi waktu Anda dalam mengambil data dari setiap situs web. Memiliki alat yang dapat memberikan Anda database lengkap lowongan pekerjaan akan menyederhanakan tugas Anda beberapa kali lipat. Anda tinggal menyaring mana yang cocok untuk Anda dan melanjutkan dengan proses lamaran. 

Jadi, Anda sedang berada di pasar kerja dan mencoba mencari pekerjaan terbaik. Tetapi Anda ingin bermain dengan lebih cerdas dan bukan lebih keras. Mengapa tidak membuat scraper web untuk mengumpulkan dan mengurai lowongan pekerjaan untuk Anda? Setelah Anda mengaturnya, ini akan memberi Anda kekayaan data dalam format yang rapi, sehingga Anda tidak perlu memeriksanya secara manual berulang kali. Mari kita mulai.

[Penafian! Banyak situs web yang dapat membatasi pengambilan data dari halaman mereka. Pengguna dapat terkena masalah hukum tergantung di mana dan bagaimana mereka mencoba mengekstrak informasi. Jadi, kita harus sangat berhati-hati jika melihat situs-situs yang menyimpan data mereka. Sebagai contoh, Facebook, Linked In, dan Craiglist terkadang keberatan jika data dihapus dari halaman mereka. Jadi, jika Anda ingin mengikis, lakukanlah dengan risiko Anda sendiri].

Ini akan menjadi artikel yang sangat mendasar di mana kita akan melihat dasar-dasar web scraping dengan mengekstrak beberapa informasi bermanfaat mengenai pekerjaan yang berhubungan dengan "Data Science" dari indeed.com. Kita akan menulis sebuah program luar biasa yang akan memperbarui pekerjaan beberapa kali secara manual. Beberapa library yang berguna yang akan sangat berguna saat membuat scraper ini adalah "requests" dan "BeautifulSoup."

Memahami URL dan Struktur Halaman

Pertama, mari kita lihat halaman contoh yang akan kita ekstrak . 

Cara struktur URL sangat penting:

  • catatan "q=" memulai string untuk bidang "apa" di halaman, memisahkan istilah pencarian dengan "+" (misalnya, mencari pekerjaan "data+ilmuwan")
  • ketika menentukan gaji, ia akan menguraikan dengan koma dalam angka gaji, sehingga awal gaji akan diawali dengan %24 dan kemudian angka sebelum koma pertama, kemudian akan dipecah oleh %2C dan dilanjutkan dengan sisa angka (yaitu, %2420%2C000 = $ 20.000)
  • catatan "&l=" memulai string untuk kota yang diinginkan, pisahkan istilah pencarian dengan "+" jika kota tersebut terdiri dari lebih dari satu kata (mis., "New+York.")
  • note "&start=" mencatat hasil pencarian di mana Anda ingin memulai (misalnya, mulai dengan melihat hasil ke-10)

Struktur URL ini akan sangat membantu saat kami terus membangun scraper dan mengumpulkan data dari banyak halaman. 

Chrome dapat memeriksa struktur HTML halaman dengan mengklik kanan dan menggunakan opsi periksa elemen. Sebuah menu akan muncul di sebelah kanan, dan juga akan menampilkan tag elemen bersarang, dan ketika Anda meletakkan kursor pada elemen tersebut, itu akan menyorot bagian layar tersebut.  

Untuk artikel ini, saya kira Anda sudah mengetahui dasar-dasar tentang HTML seperti tag, div, dan lain-lain, tetapi untungnya Anda tidak perlu mengetahui semuanya. Anda hanya perlu memahami struktur halaman dan hirarki komponen yang berbeda.

Memulai dengan Scraper

Sekarang kita telah menganalisis struktur halaman. Ini akan membantu kita membuat kode sesuai dengan informasi tersebut untuk mengambil data yang kita inginkan. Mari kita mulai dengan mengimpor pustaka kita. Perhatikan bahwa di sini kita juga mengimpor "waktu", yang akan sangat membantu untuk tidak membebani server situs saat mengais informasi.

permintaan impor 
import bs4
from bs4 import BeautifulSoup
import panda sebagai pd
waktuimpor

Pertama-tama kita akan menargetkan satu halaman untuk menarik setiap informasi yang kita inginkan,

URL = "https://www.indeed.com/jobs?q=data+scientist+%2420%2C000&l=New+York&start=10"
#melakukan permintaan dari URL yang disebutkan di atas:
page = requests.get(URL)
#menentukan format "halaman" yang diinginkan menggunakan parser html - ini memungkinkan python untuk membaca berbagai komponen halaman, daripada memperlakukannya sebagai satu string panjang.
sup = BeautifulSoup(page.text, "html.parser")
#Mencetak sup dalam format pohon yang lebih terstruktur sehingga lebih mudah dibaca
print(sup.mempercantik())

Menggunakan prettify memudahkan Anda untuk mendapatkan gambaran umum tentang pengkodean HTML halaman dan memberikan keluaran seperti ini,

 Sekarang semua informasi di halaman yang kita inginkan ada di variabel "sup". Kita harus menggali lebih dalam kode untuk mengulang berbagai tag dan sub-tag untuk mendapatkan informasi yang dibutuhkan.

Mendapatkan Elemen Dasar Data

Lima poin penting untuk setiap lowongan pekerjaan adalah,

  1. Jabatan.
  2. Nama Perusahaan.
  3. Lokasi.
  4. Gaji.
  5. Ringkasan Pekerjaan.

Jika kita lihat di halaman tersebut, ada 15 lowongan pekerjaan. Oleh karena itu, kode kita juga harus menghasilkan 15 item yang berbeda. Namun, jika kode yang dihasilkan kurang dari itu, kita dapat merujuk kembali ke halaman tersebut dan melihat apa yang tidak ter-capture.

Mendapatkan Gelar Pekerjaan

As can be seen, the entirety of each job posting is under <div> tags, with an attribute “class” = “row result.”

Further, we could also see that job titles are under <a> tags, with the attribute “title = (title)”. One can see the value of the tag’s attribute with tag[“attribute”], so I can use it to find each posting’s job title.

Jika kita rangkum, fungsi yang akan kita lihat melibatkan tiga langkah berikut ini,

  1. Pulling out all the <div> tags with class including “row”.
  2. Identifying <a> tags with attribute “data-tn-element”:”jobTitle”
  3. For each of these <a> tags, find attribute values “title”
def extract_job_title_from_result(soup): 
  jobs = []
  for div in soup.find_all(name="div", attrs={"class":"row"}):
    for a in div.find_all(name="a", attrs={"data-tn-element":"jobTitle"}):
      jobs.append(a["title"])
  return(jobs)
extract_job_title_from_result(soup)

Kode ini akan menghasilkan output seperti ini,

Mendapatkan Nama Perusahaan

Getting company names can be a bit tricky because most of them are appearing in <span> tags, with “class”:” company”.  They are also housed in <span> tags with “class”:” result-link-source”.

Kita akan menggunakan pernyataan if/else untuk mengekstrak informasi perusahaan dari masing-masing tempat ini. Untuk menghapus spasi putih di sekitar nama perusahaan ketika mereka di-output, kita akan menggunakan input.strip() di bagian akhir.

def extract_company_from_result(soup): 
 companies = []
 for div in soup.find_all(name="div", attrs={"class":"row"}):
   company = div.find_all(name="span", attrs={"class":"company"})
   if len(company) &gt; 0:
    for b in company:
     companies.append(b.text.strip())
   else:
    sec_try = div.find_all(name="span", attrs={"class":"result-link-source"})
    for span in sec_try:
      companies.append(span.text.strip())
 return(companies)
 
extract_company_from_result(soup)

Mendapatkan Lokasi

Locations are located under the <span> tags. Span tags are sometimes nested within each other, such that the location text may sometimes be within “class”:”location” attributes, or nested in “itemprop”:”addressLocality”. However a simple for loop can examine all span tags for text and retrieve the necessary information.

def extract_location_from_result(soup): 
  locations = []
  spans = soup.findAll('span', attrs={'class': 'location'})
  for span in spans:
    locations.append(span.text)
  return(locations)
extract_location_from_result(soup)

Mendapatkan Gaji

Gaji adalah bagian yang paling menantang untuk diekstrak dari lowongan pekerjaan. Sebagian besar lowongan tidak mempublikasikan informasi gaji sama sekali, sementara lowongan lain yang mempublikasikannya, mungkin ada beberapa tempat untuk mengambilnya. Jadi kita harus menulis kode yang dapat mengambil beberapa gaji dari beberapa tempat, dan jika tidak ada gaji yang ditemukan, kita perlu membuat nilai "Tidak Ditemukan" untuk setiap pekerjaan yang tidak mengandung gaji. 

Some salaries are under <nobr> tags, while others are under <div> tags, “class”:”sjcl” and are under separate div tags with no attributes. Try/except statement can be helpful while extracting this information. 

def extract_salary_from_result(soup): 
  salaries = []
  for div in soup.find_all(name="div", attrs={"class":"row"}):
    try:
      salaries.append(div.find('nobr').text)
    except:
      try:
        div_two = div.find(name="div", attrs={"class":"sjcl"})
        div_three = div_two.find("div")
        salaries.append(div_three.text.strip())
      except:
        salaries.append("Nothing_found")
  return(salaries)
extract_salary_from_result(soup)

Mendapatkan Ringkasan Pekerjaan

Tugas terakhir adalah mendapatkan ringkasan pekerjaan. Namun, ringkasan pekerjaan untuk setiap posisi tertentu tidak dapat diperoleh karena tidak disertakan dalam HTML dari halaman Indeed. Kita bisa mendapatkan beberapa informasi tentang setiap pekerjaan dari apa yang disediakan. Kita dapat menggunakan Selenium untuk tujuan ini.

But let’s first try this using python. Summaries are located under <span> tags. Span tags are nested within each other such that the location text is within “class”:” location” tags or nested in “itemprop”:” adressLocality”. However, using a simple for loop can examine all span tags for text to retrieve the necessary information.

Pertanyaan yang Sering Diajukan

1. Why is it necessary to scrape job details?
Ada cukup banyak portal pekerjaan yang bisa memberi tahu Anda tentang pekerjaan yang cocok dengan profil Anda. Namun, memiliki solusi pengikisan pekerjaan akan memberi Anda daftar lengkap pekerjaan dan deskripsi sebagai basis data yang praktis. Ini akan membuat Anda memiliki pandangan yang lebih baik tentang semua peluang kerja di satu tempat.
2. How can a proxy help in scraping job details?
Scraping web biasanya akan memiliki tantangan tertentu seperti blok IP, blok geografis, dan kecepatan yang terbatas. Mengikis pekerjaan dari portal pekerjaan juga akan memiliki tantangan seperti itu. Untuk mengatasi semua masalah ini, alamat proxy dapat membantu Anda dengan alamat IP dari lokasi yang diperlukan dan memastikan anonimitas
3. What are the python libraries required to scrape job details?
Requests, BeautifulSoup, and Pandas are quite common python libraries to scrape job-related data from websites. Request library is the most common python library used to send web requests, while BeautifulSoup is responsible for parsing data, and Pandas library will help with the data structure operations.
Artikel Terkait

Membungkus

Pada artikel ini, kita telah melihat apa itu web scraping dan bagaimana web scraping dapat membantu dalam kehidupan kita sehari-hari dengan mengambil contoh praktis untuk mengambil data pekerjaan dari halaman web Indeed. Harap dicatat bahwa hasil yang Anda dapatkan mungkin berbeda dari hasil ini karena halamannya dinamis, sehingga informasinya terus berubah seiring berjalannya waktu. 

Web Scraping adalah teknik yang luar biasa jika dilakukan dengan benar dan sesuai dengan kebutuhan Anda. Kita telah melihat lebih jauh lima aspek penting dari setiap lowongan pekerjaan dan cara mengekstraknya. Ketika Anda mencoba kode ini sendiri, Anda akan mendapatkan data lowongan pekerjaan, dan Anda tidak perlu mencari pekerjaan secara manual, dan itu luar biasa. Teknik yang sama juga dapat diterapkan pada halaman web lain, tetapi strukturnya mungkin berbeda. Oleh karena itu, kita perlu mengoptimalkan kode sesuai dengan itu. Tapi semua dasar-dasarnya sudah tercakup dalam artikel ini, jadi tidak akan ada kesulitan dalam mengikis halaman lain juga.

Jika Anda mencari layanan proxy, jangan lupa untuk melihat ProxyScrapeproxy perumahan dan premium.