사람인 채용공고 크롤링을 통한 데이터 수집 방법



사람인 채용공고 크롤링을 통한 데이터 수집 방법

사람인 웹사이트에서 채용공고를 크롤링하여 데이터를 수집하는 방법에 대해 알아보겠습니다. 이 과정은 실제 프로젝트에서 사용된 경험을 바탕으로 하며, 자주 발생하는 문제와 그 해결 방안도 함께 설명하겠습니다. 크롤링을 통해 얻을 수 있는 데이터는 다양한 분야의 채용 정보를 포함하고 있어, 이를 활용하면 구직 활동에 큰 도움이 됩니다.

 

👉 ✅ 상세 정보 바로 확인 👈

 

크롤링 준비 및 환경 설정

셀레니움 설치 및 모듈 불러오기

크롤링을 위해 Selenium을 사용합니다. 이 라이브러리는 웹 브라우저를 자동으로 조작할 수 있도록 도와줍니다. 필요한 모듈을 불러오는 것으로 시작합니다. 아래는 주요 모듈을 불러오는 예제입니다.



python
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import csv

위와 같은 모듈을 설치하고 불러온 후, 웹 드라이버를 설정합니다. 크롬 브라우저를 사용할 경우, ChromeDriver를 다운로드하여 경로를 설정해야 합니다.

크롤링할 URL 리스트 작성

사람인 웹사이트에서 채용 정보를 조회하기 위해 각 직군별로 URL을 리스트에 저장합니다. 아래는 예시로 사용되는 URL 리스트입니다.

python
base_url = 'https://www.saramin.co.kr/zf_user/jobs/list/job-category?page='
url_list = ['&cat_kewd=87%2C88%2C84%2C194%2C93%2C94%2C115%2C113%2C2232',
'&cat_kewd=192%2C184',
'&cat_kewd=319%2C185%2C186%2C189%2C320']

이 리스트를 기반으로 각 페이지를 순회하면서 채용공고의 URL을 수집합니다.

 

👉 ✅ 상세 정보 바로 확인 👈

 

채용공고 URL 수집 과정

URL 접속 및 데이터 저장

웹 드라이버를 통해 각 URL에 접속한 후, 해당 페이지에서 채용공고의 URL을 수집합니다. 이 과정은 다음과 같이 진행됩니다.

  1. 각 직군별 페이지로 이동
  2. 채용공고 리스트에서 URL을 추출하여 배열에 저장

“`python
driver = webdriver.Chrome(“chromedriver”)
data = [[] for _ in range(len(url_list))]

for idx, urls in enumerate(url_list):
for page in range(1, 5): # 각 직군의 최대 페이지 수를 설정
driver.get(base_url + str(page) + urls)
time.sleep(2) # 페이지 로딩 대기
elements = driver.find_elements(By.CLASS_NAME, “list_item”)
for element in elements:
link = element.find_element(By.TAG_NAME, “a”).get_attribute(‘href’)
data[idx].append(link)

driver.close()
“`

위 코드는 각 직군별로 채용공고의 링크를 수집하는 기본적인 구조입니다. 각 페이지가 로드될 때까지 대기하는 시간을 설정하는 것이 중요합니다.

수집한 URL 데이터 확인

수집한 데이터의 개수를 확인하여 제대로 저장되었는지 검증합니다. 이 과정은 데이터의 양을 체크하는 데 유용합니다.

python
for idx, urls in enumerate(data):
print(f"{idx + 1}번 직군의 데이터 수: {len(urls)}")

채용공고 데이터 크롤링 및 저장

데이터 크롤링 및 CSV 파일 저장

수집한 URL을 바탕으로 각 채용공고의 세부 정보를 크롤링합니다. 이 과정은 iframe을 다루는 방법과 CSV 파일로 데이터를 저장하는 방법을 포함합니다.

“`python
driver = webdriver.Chrome(“chromedriver”)
hashtag = [‘Back_end’, ‘Software’, ‘System’]

for idx, urls in enumerate(data):
for url in urls:
driver.get(url)
time.sleep(2)
driver.switch_to.frame(“iframe_content_0”)
try:
content = driver.find_element(By.CLASS_NAME, “user_content”).text
with open(‘./saramin_data.csv’, ‘a’, encoding=’utf-8′, newline=”) as csvfile:
fieldnames = [‘content’, ‘tag’]
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writerow({‘content’: content, ‘tag’: hashtag[idx]})
except Exception as e:
print(f”Error occurred: {e}”)
“`

이 코드는 각 채용공고의 내용을 추출하여 CSV 파일에 저장하는 기능을 수행합니다. iframe으로 전환한 후, 필요한 데이터를 추출하는 과정에서 발생할 수 있는 예외를 처리하는 것이 중요합니다.

최종 결과 확인 및 마무리

크롤링 데이터 확인

최종적으로 크롤링한 데이터의 양을 확인합니다. 이 정보를 통해 데이터 수집의 성공 여부를 판단할 수 있습니다.

python
with open('./saramin_data.csv', 'r', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
rows = list(reader)
print(f"총 크롤링된 데이터 수: {len(rows)}")

위 과정을 통해 총 몇 개의 데이터가 수집되었는지 확인할 수 있습니다. 크롤링 작업이 완료되면, 데이터의 품질과 유용성을 평가하고 필요한 후처리를 진행합니다.

지금 바로 실행할 수 있는 방법

지금까지 설명한 내용을 바탕으로 크롤링 작업을 진행하면, 사람인 웹사이트에서 유용한 채용 데이터를 수집할 수 있습니다. 이 정보를 활용하여 구직 활동에 도움이 될 수 있습니다.