membuat web scraping dengan python

Membuat Web Scraping Dengan Python

Pada artikel kali ini, kita akan membuat web scraping dengan menggunakan bahasa pemrograman python.

Web scraping merupakan proses yang mana kita akan mengambil content atau data dari suatu website. Hal ini sangat penting, jika kalian ingin mengetahui data kompetitor kalian.

Web scraping sendiri dapat dibuat dengan mudah menggunakan Python. Pastikan kalian menginstall terlebih dahulu python sebelum mengikuti tutorial kali ini.

Pertama, kita akan membuat folder baru dengan nama web-scraping. Setelah itu, buka folder tersebut dengan text editor kalian. Disini saya menggunakan visual studio code.

Kemudian buat file dengan nama main.py di dalam folder yang barusan kita buat.

Kita akan menginstall beberapa library dari python untuk memudahkan web scraping. Antaralain bs4 dan request. Kalian bisa buka terlebih dahulu command line, lalu install libarary barusan.

pip install bs4 request lxml

Disini kita akan menggunakan TimesJobs untuk kita ambil beberapa data jobs yang ada dalam TimeJobs.

Buka website TimeJobs dan lakukan pencarian dengan skill python. Kemudian, copy url websitenya.

real website scraping

Sekarang, buka file main.py dan import bs4, request, dan time. Setelah itu, kita akan merequest untuk mendapatkan struktur html dari website TimeJobs.

from bs4 import BeautifulSoup
import requests
import time

html_text = requests.get(
        "https://www.timesjobs.com/candidate/job-search.html?searchType=personalizedSearch&from=submit&txtKeywords=Python&txtLocation=").text

Jika kita print variable html_text maka akan muncul struktur html dari website TimesJobs. Akan tetapi, struktur html masih belum rapi. Untuk merapikannya kita bisa menggunakan BeautifulSoap.

soup = BeautifulSoup(html_text, 'lxml')

Buka website TimeJobs, kemudian kita akan melakukan inspect element untuk setiap job yang ditemukan. Setelah itu, kalian bisa mencari tag html untuk setiap job. Jika sudah ditemukan, kita akan mencopy tag html dan class.

inspect element web scraping

Kita akan melakukan pencarian dengan python menggunakan tag html dan class yang kita dapatkan barusan.

jobs = soup.find_all('li', class_='clearfix job-bx wht-shd-bx')

Karena kita menggunakan method find_all() maka kita perlu mengambil detail job satu persatu menggunakan looping.

for index, job in enumerate(jobs):
    // detail job

Kita akan mengambil data nama perusahaan, skills, detail info, dan tanggal publikasi job dari TimesJobs. Selanjutnya, Anda buka kembali website TimesJobs dan lakukan inspect element untuk mendapatkan tag html dan class data yang kita butuhkan.

published_date = job.find('span', class_='sim-posted').span.text

company_name = job.find(
    'h3', class_='joblist-comp-name').text.replace(' ', '')
skills = job.find(
    'span', class_='srp-skills').text.replace(' ', '')
more_info = job.header.h2.a['href']

Kita hanya ingin mengambil data job yang baru dipublikasi. Nah, untuk itu kita perlu pengecekan terlebih dahulu terhadap published_date.

published_date = job.find('span', class_='sim-posted').span.text
if "few" in published_date:
    company_name = job.find(
        'h3', class_='joblist-comp-name').text.replace(' ', '')
    skills = job.find(
        'span', class_='srp-skills').text.replace(' ', '')
    more_info = job.header.h2.a['href']

Data yang telah kita peroleh nantinya akan kita masukkan ke dalam file .txt

Pertama, kita buat folder baru lagi dengan nama job. Setelah itu, akan menggunakan with open untuk membuatkan sebuah file di dalam folder job.

with open(f'job/{index}.txt', 'w') as f:
    f.write(f'Company name: {company_name.strip()} \n')
    f.write(f'Required skill: {skills.strip()} \n')
    f.write(f'More info: {more_info} \n')

print(f'File saved: {index}')

Terakhir, kita akan run file main.py dan jika berhasil maka akan muncul file .txt di folder job. Kalian bisa buka file tersebut untuk melihat detail job terbaru.

Meskipun sudah berhasil, tetapi program yang kita buat langsung berhenti.

Jadi kita perlu membuat function dengan nama find_job() terlebih dahulu. Setelah itu, masukkan looping nya ke dalam find_job()

def find_jobs():
    for index, job in enumerate(jobs):
        published_date = job.find('span', class_='sim-posted').span.text
        if "few" in published_date:
            company_name = job.find(
                'h3', class_='joblist-comp-name').text.replace(' ', '')
            skills = job.find(
                'span', class_='srp-skills').text.replace(' ', '')
            more_info = job.header.h2.a['href']

        with open(f'job/{index}.txt', 'w') as f:
            f.write(f'Company name: {company_name.strip()} \n')
            f.write(f'Required skill: {skills.strip()} \n')
            f.write(f'More info: {more_info} \n')

        print(f'File saved: {index}')

Di bagian terakhir agar supaya program tidak dapat terhenti, maka disini kita akan menggunakan while. Kita perlu menyetting waktu agar program dijalankan tiap 10 menit sekali.

if __name__ == '__main__':
    while True:
        find_jobs()
        time_wait = 10
        print(f'Waiting {time_wait} minutes...')
        time.sleep(time_wait * 60)

Cukup sekian tutorial membuat web scraping menggunakan python. Jika masih ada kesulitan maupun error kalian bisa komentar dibawah sini.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top