Python을 활용한 채용공고 크롤링 자동화 방법: 사람인, 잡코리아, 원티드



Python을 활용한 채용공고 크롤링 자동화 방법: 사람인, 잡코리아, 원티드

채용사이트에서 반복되는 검색 과정을 자동화하여 효율성을 높일 수 있는 방법을 소개한다. Python을 이용하여 사람인, 잡코리아, 원티드에서 채용공고를 수집하고, 이 데이터를 이메일로 전송하는 시스템을 구현하는 방법을 단계별로 안내한다.

 

👉 ✅ 상세 정보 바로 확인 👈

 

1. 자동화 환경 구성하기

크롤링 자동화를 실행하기 위해서는 Python 개발 환경과 필수 라이브러리를 설치해야 한다. 또한, 이메일 발송과 GitHub Actions를 위한 설정도 필요하다.



Python 및 에디터 설치

Python 3.9 이상의 버전을 설치하고, 본인이 선호하는 코드 편집기를 선택한다. Visual Studio Code, PyCharm, Jupyter Notebook 등이 일반적으로 사용된다.

GitHub 프로젝트 폴더 구성

GitHub 계정이 있다면, 새로운 프로젝트를 생성하고 아래와 같이 폴더를 구성한다. 만약 GitHub 사용이 어렵다면, 로컬 PC에서도 자동 실행이 가능하다.

plaintext
job-crawler/
┣ saramin_crawler.py
┣ requirements.txt
┣ .github/workflows/crawler.yml
┣ .gitignore
┗ README.md

Gmail App Password 발급

이메일 알림을 위한 Gmail SMTP를 사용하기 위해서는 앱 비밀번호를 발급받아야 한다. Google 계정에서 앱 비밀번호를 생성하고 이를 복사하여 저장한다.

필수 라이브러리 설치

필요한 라이브러리를 설치하기 위해 아래 명령어를 실행한다.

pip install requests beautifulsoup4 pandas

 

👉 ✅ 상세 정보 바로 확인 👈

 

2. 웹사이트 구조 분석

크롤링을 성공적으로 수행하기 위해서는 사이트의 구조를 이해하는 것이 중요하다. 각 페이지의 구조와 URL 파라미터를 파악한다.

개발자 도구 활용

브라우저의 개발자 도구(F12)를 열고 사람인 웹사이트에서 “데이터”를 검색하여 구조를 분석한다. 각 채용공고는 특정 클래스의 div 요소로 감싸져 있으며, 필요한 정보를 추출할 수 있다.

URL 패턴 파악

사람인에서 사용할 수 있는 URL 파라미터를 분석한다. 예를 들어, searchword, recruitPage, sal_min 등의 파라미터를 사용하여 검색 결과를 필터링할 수 있다.

plaintext
https://www.saramin.co.kr/zf_user/search/recruit?searchword=데이터&recruitPage=1

3. 크롤러 코드 구현

이제 본격적으로 크롤러 코드를 작성한다. SaraminCrawler 클래스를 정의하고 필요한 메소드를 구현한다.

“`python
import requests
from bs4 import BeautifulSoup
import pandas as pd
import time
from datetime import datetime
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

class SaraminCrawler:
def init(self):
self.headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (K, like Gecko) Chrome/91.0.4472.124 Safari/537.36’
}

def search_jobs(self, keyword, max_pages=2, **filters):
    # API 호출 및 검색 로직
    pass

def extract_job_info_from_api(self, item, keyword):
    # 개별 공고 정보 추출
    pass

def save_to_csv(self, jobs):
    # CSV 저장 기능
    pass

def send_email_notification(self, jobs, email_config):
    # 이메일 알림 기능
    pass

def run_advanced_crawler(self, email_config=None):
    # 크롤러 실행 로직
    pass

if name == “main“:
# 크롤러 실행
pass
“`

4. 코드의 주요 메소드

각 메소드는 특정 기능을 수행하며, 코드를 체계적으로 구성한다.

채용공고 검색

search_jobs 메소드는 특정 키워드에 따라 API를 호출하여 채용공고를 검색한다. 페이지네이션을 고려하여 최대 5페이지까지 크롤링하도록 설계한다.

정보 추출

extract_job_info_from_api 메소드는 채용공고에서 제목, 회사명, 위치, 경력, 마감일 등의 정보를 추출하여 딕셔너리 형태로 반환한다.

CSV 파일 저장

save_to_csv 메소드는 크롤링한 결과를 CSV 파일로 저장하며, 파일명은 현재 날짜와 시간을 기준으로 자동 생성된다.

이메일 알림

send_email_notification 메소드는 크롤링된 채용공고를 이메일로 전송한다. 형식으로 작성하여 가독성을 높인다.

5. 실행 절차 및 주의사항

실행을 위해서는 다음과 같은 절차를 따른다.

  1. Python과 필요한 라이브러리를 설치한다.
  2. GitHub 프로젝트를 생성하고 필요한 파일을 추가한다.
  3. Gmail 앱 비밀번호를 발급받는다.
  4. 크롤러 코드를 작성하고 필요한 메소드를 구현한다.
  5. 최종적으로 크롤러를 실행하여 채용공고를 수집한다.

6. 효율적인 크롤링을 위한 체크리스트

구현 후, 아래 체크리스트를 통해 작동 여부를 확인한다.

추천 상황막히는 지점회피 팁
API 호출이 원활할 때서버 응답 지연타임아웃 설정을 늘리기
채용공고 양이 많을 때메모리 부족결과를 분할 저장하기
정기적으로 채용공고 확인할 때이메일 전송 실패SMTP 설정 재확인하기
데이터 분석 시형식 오류CSV 파일 포맷 확인하기
다양한 키워드로 검색할 때검색 결과 없음검색어 조정하여 재시도하기

이제 이러한 방법을 통해 Python을 활용하여 채용공고 크롤링 자동화를 시작할 수 있다. 필요한 모든 설정과 과정은 명확하게 정리되어 있으므로, 이를 바탕으로 효율적인 채용공고 수집 시스템을 구축할 수 있다.