Beranda BlogPengikisan web Buat Scraper Google Jobs dengan Python dan ScraperAPI

Buat Scraper Google Jobs dengan Python dan ScraperAPI

oleh Kadek

TL;DR: Pengikis Python Pekerjaan Google

Bagi mereka yang terburu-buru, berikut adalah cara cepat untuk mengikis Google Jobs untuk beberapa pertanyaan menggunakan Python dan ScraperAPI:

import requests

queries = ('video editor', 'python developer')

for query in queries:
    payload = {
        'api_key': 'YOUR_API_KEY',
        'query': query,
        'country_code': 'us',
        'output_format': 'csv'
    }
    
    response = requests.get('https://api.scraperapi.com/structured/google/jobs', params=payload)
    
    if response.status_code == 200:
        filename = f'{query.replace(" ", "_")}_jobs_data.csv'
        with open(filename, 'w', newline='', encoding='utf-8') as file:
            file.write(response.text)
        print(f"Data for {query} saved to {filename}")
    else:
        print(f"Error {response.status_code} for query {query}: {response.text}")

Scraper ini melakukan iterasi melalui daftar kueri pekerjaan, mengirimkan permintaan melalui titik akhir Google Jobs ScraperAPI, dan menyimpan hasilnya sebagai file CSV.

Apakah Anda ingin tahu bagaimana itu dibangun? Baca terus!

Tantangan Menghilangkan Pekerjaan Google

Google Jobs (atau Google for Jobs) adalah salah satu sumber daftar pekerjaan terpenting di dunia. Ia mengumpulkan daftar pekerjaan dari jutaan situs web di satu tempat sehingga pencari kerja dapat menemukan peluang yang tepat di hasil pencarian Google.

Ikhtisar tata letak situs Google JobsIkhtisar tata letak situs Google Jobs

Karena hasil ini tersedia untuk umum, kami dapat mencari pekerjaan di Google secara legal dan sesuai dengan praktik etika untuk menghindari kelebihan layanan.

Namun, ada beberapa tantangan yang membuat tugas ini sulit:

  • Mekanisme anti-goresan Google: Sebagai bagian dari Layanan Google, Google Jobs memiliki sistem deteksi bot canggih yang dapat mendeteksi dengan cepat saat manusia membuat permintaan. Hal ini dapat mencakup, misalnya, tantangan CAPTCHA dan batasan tarif.
  • Render JavaScript: Jika Anda memeriksa situs web lebih dekat, Anda akan melihat bahwa data yang Anda lihat di layar tidak disertakan dalam HTML situs web. Sebaliknya, mereka disisipkan secara dinamis melalui JavaScript. Hal ini menambah lapisan kompleksitas dan memaksa kami menemukan cara untuk merender halaman sebelum kami dapat mengakses data.
  • Pengguliran tanpa batas: Terkait dengan tantangan sebelumnya, daftar Google Pekerjaan baru hanya akan dimuat di halaman saat digulir ke bawah. Dengan kata lain, kita juga perlu berinteraksi dengan situs tersebut jika ingin mengumpulkan data dalam jumlah besar.
  • Data spesifik geografis: Meskipun tidak menantang, Google Jobs menunjukkan hasil yang berbeda tergantung pada lokasi IP. Misalnya, jika Anda ingin mendapatkan data dari AS tetapi berbasis di Italia seperti saya, Anda harus mencari cara untuk mengubah lokasi IP Anda (penargetan geografis).

Untuk mengatasi tantangan ini – dan hambatan lain apa pun yang menghalangi kami – saya menggunakan ScraperAPI untuk:

  • Akses lebih dari 40 juta proxy di lebih dari 50 negara
  • Putar proxy saya secara otomatis untuk memastikan tingkat keberhasilan yang tinggi
  • Ubah data HTML Google Jobs mentah menjadi data JSON terstruktur

Menghapus pekerjaan Google dengan Python dan ScraperAPI

ScraperAPI menyediakan endpoint Google Jobs yang mudah digunakan untuk mengumpulkan daftar pekerjaan untuk kueri apa pun yang kita inginkan, tanpa kita harus membangun infrastruktur yang rumit atau menggunakan browser tanpa kepala.

Dengan mengirimkan permintaan kami melalui titik akhir, ScraperAPI menangani rendering JS, pemrosesan CAPTCHA, dan rotasi proksi untuk kami dan mengembalikan data pekerjaan dalam format JSON, menghemat jam pengembangan, analisis data, dan pembersihan.

Untuk contoh proyek ini, mari kumpulkan data untuk kueri "Editor Video".

Ikhtisar tata letak Google Pekerjaan

Jika Anda menavigasi ke Google dan mencari Pekerjaan Editor VideoAnda akan dibawa ke halaman seperti ini:

Kueri penelusuran terkait pekerjaan di Google PenelusuranKueri penelusuran terkait pekerjaan di Google Penelusuran

Mengklik kotak itu akan membawa Anda ke antarmuka utama Google Jobs. Semua tawaran pekerjaan tercantum di sebelah kiri dan rincian lebih lanjut ditampilkan di sebelah kanan.

Hasil penelusuran untuk listingan Google PekerjaanHasil penelusuran untuk listingan Google Pekerjaan

Dari sini kita dapat mengakses beberapa informasi dasar di kartu kiri, seperti jabatan, perusahaan yang menawarkan pekerjaan, tempat kerja dan rincian tambahan seperti berapa lama tawaran pekerjaan itu diposting dan gajinya.

Item daftar Google PekerjaanItem daftar Google Pekerjaan

Tentu saja, kita bisa mendapatkan lebih banyak data dari iklan pekerjaan itu sendiri, namun elemen yang paling relevan adalah deskripsi pekerjaan di sebelah kanan, yang memberikan kita semua konteks pekerjaan yang kita butuhkan.

Deskripsi pekerjaan dari daftar Google PekerjaanDeskripsi pekerjaan dari daftar Google Pekerjaan

Anda juga perlu mengingat bahwa semua informasi ini dimasukkan ke dalam halaman secara dinamis melalui JavaScript. Jadi skrip normal tidak dapat melihat halaman seperti yang kita lakukan. Dan bahkan setelah rendering, kita masih perlu melakukan tindakan tertentu untuk mendapatkan gambar yang lengkap.

Contoh yang bagus adalah deskripsi pekerjaan di atas. Untuk mendapatkan keseluruhan deskripsi pekerjaan kita harus mengklik ini Tampilkan deskripsi lengkap Tombol.

Namun, dengan menggunakan endpoint Google Jobs ScraperAPI kita bisa mendapatkan yang berikut:

  • URL postingan pekerjaan
  • Nama perusahaan
  • Judul pekerjaan
  • Keterangan

Dan detail tambahan tanpa memerlukan interaksi halaman - jadi tidak ada browser tanpa kepala atau solusi rumit.

Yang terpenting, Anda tidak perlu mempertahankan parser Anda karena tim pengembangan ScraperAPI terus menjalankan scraper Anda dengan memantau perubahan pada situs Google Jobs dan dengan cepat beradaptasi dengan tata letak dan tantangan baru.

Persyaratan proyek

Sebelum kita mulai menulis skrip, pastikan Python dan perpustakaan Permintaan telah diinstal di komputer Anda.

Untuk menginstal Permintaan, gunakan perintah berikut:

Anda juga perlu membuat akun ScraperAPI gratis untuk mendapatkan akses ke kunci API Anda, yang dapat Anda akses dari dasbor Anda.

Itu saja, sekarang kita bisa mulai!

Langkah 1: Menyiapkan proyek scraping Google Jobs Anda

Pertama, buat direktori baru untuk proyek Anda dan file Python baru di dalamnya. Saya menyebutnya google-pekerjaan-scraper.py.

Impor di bagian atas file requests Dan json. Kami menggunakan yang terakhir untuk mengekspor data kami.

import requests
import json

Titik akhir Google Jobs bekerja dengan meneruskan kunci API Anda, kueri yang datanya Anda perlukan, dan negara asal permintaan Anda. Kami memberikan semua informasi ini dalam satu payload.

payload = {
   'api_key': 'YOUR_API_KEY',
   'query': 'video editor',
   'country_code': 'us'
}

Catatan: Tambahkan kunci API Anda yang sebenarnya ke api_key Parameter sebelum menjalankan skrip Anda.

Saya juga mengatur proxy kami ke AS untuk menerima tawaran pekerjaan dari AS. Jika tidak, ScraperAPI dapat menggunakan proxy dari berbagai negara, yang akan memengaruhi keakuratan data kami. Jika lokasi tidak penting bagi Anda, abaikan saran ini.

Untuk lebih mengontrol geolokasi, Anda juga dapat menggunakan TLD Google tertentu dengan tld Parameternya sebagai berikut:

payload = {
   'api_key': 'YOUR_API_KEY',
   'query': 'video editor',
   'country_code': 'us',
   'tld': '.com'
}

Hal ini sangat berguna jika Anda ingin melihat perubahan hasil penelusuran untuk berbagai kombinasi, seperti: Misalnya menggunakan proxy Inggris tetapi menargetkan Google .com TLD.

Jika tidak disetel, ScraperAPI akan menargetkan TLD .com secara default.

Langkah 2: Kirim permintaan get() ke titik akhir Google Jobs

Sekarang itu payload sudah siap, kirim satu get() permintaan ke titik akhir, di mana payload sebagai params.

response = requests.get('https://api.scraperapi.com/structured/google/jobs', params=payload)

ScraperAPI menggunakan kueri Anda untuk melakukan penelusuran Google Pekerjaan, merender halaman, dan mengembalikan semua titik data yang relevan dalam format JSON.

Langkah 3: Ekspor semua tawaran pekerjaan ke file JSON

Karena titik akhir mengembalikan respons JSON, kita dapat menyimpan data di a all_jobs variabel dan kemudian mengekspornya ke file dengan dump() metode json.

all_jobs = response.json()
with open('google-jobs', 'w') as f:
   json.dump(all_jobs, f)

Inilah yang Anda dapatkan:

{
   "url": "https://www.google.com/search?ibp=htl;jobs&q=video+editor&gl=US&hl=en&uule=w+CAIQICIgSHViZXIgSGVpZ2h0cyxPaGlvLFVuaXRlZCBTdGF0ZXM=",
   "scraper_name": "google-jobs",
   "jobs_results": (
       {
           "title": "Freelance Video Editor for Long Form Video",
           "company_name": "Upwork",
           "location": "Anywhere",
           "link": "https://www.google.com/search?ibp=htl;jobs&q=video+editor(TRUNCATED)",
           "via": "Upwork",
           "description": "We are looking for a talented freelance video editor to work on a long form style video. (TRUNCATED)",
           "extensions": (
               "Posted 16 hours ago",
               "Work from home",
               "Employment Type Contractor and Temp work",
               "Qualification No degree mentioned"
           )
       }, //TRUNCATED

Catatan: Lihat seperti apa tanggapan Google Jobs secara lengkap.

Langkah 3.2: Ekspor tawaran pekerjaan Google sebagai CSV

Titik akhir Google Jobs juga menangani konversi data yang tergores menjadi data tabular, sehingga mengekspor pekerjaan ke file CSV menjadi cukup mudah.

Mari kita mulai dengan output parameter csv di milik kita payload:

payload = {
   'api_key': credentials.api_key,
   'query': 'video editor',
   'country_code': 'us',
   'tld': '.com',
   'output_format': 'csv'
}

Catatan: Jika itu output_format tidak disetel, titik akhir defaultnya adalah format JSON.

Kami kemudian dapat membuat file CSV dengan teks dari respons:

response = requests.get('https://api.scraperapi.com/structured/google/jobs', params=payload)
if response.status_code == 200:
   filename = 'jobs_data.csv'
   # Save the response content to a CSV file
   with open(filename, 'w', newline='', encoding='utf-8') as file:
       file.write(response.text)
   print(f"Data saved to {filename}")
else:
   print(f"Error {response.status_code}: {response.text}")

Seperti inilah tampilan file Anda:

Data pekerjaan Google diambil dalam format CSVData pekerjaan Google diambil dalam format CSV

Catatan: Gambar di atas berasal dari pratinjau editor VScode saya.

Pos terkait

Tinggalkan Komentar