카테고리 없음
BeautifulSoup로 잡스코리아 크롤링.
_뮨
2022. 6. 29. 23:16
요즘에는 nico쌤의 파이썬 수업을 듣고 있다. 수업에서 indeed 사이트를 크롤링하였는데 그동안 업데이트되서 그런지 사이트의 한 번에 50개의 직업정보보기 같은 검색기능이 사라져서 한 페이지에 10개만 표시되었다. 그래서 그냥 잡스코리아에서 직업을 개발자로 검색하고 그중 첫 10페이지의 직업정보를 추출해보기로 했다.
!/usr/bin/env python3
from bs4 import BeautifulSoup
import requests
print('content-type: text/html; charset=utf-8\n')
먼저 python3의 경로를 표시하고 BeautifulSoup와 requests 모듈을 import 했다.
url = 'https://www.jobkorea.co.kr/Search/?stext=%EA%B0%9C%EB%B0%9C%EC%9E%90&tabType=recruit&Page_No=1'
f_url = 'https://www.jobkorea.co.kr/Search/?stext=%EA%B0%9C%EB%B0%9C%EC%9E%90&tabType=recruit&Page_'
def extract_pages():
pages = requests.get(url)
soup = BeautifulSoup(pages.text, 'html.parser')
pagination = soup.find('div', {'class': 'tplPagination newVer wide'})
pages = pagination.find_all('a')
list = []
for page_number in pages[:-1]:
list.append(int(page_number.text))
max_page = list[-1]
return(max_page)
먼저 웹페이지 하단에 웹페이지수를 각각 표시하는 <a>태그를 가져와서 <a>.text->페이지수를 인것을 이용하여 for문으로 최대페이지수 10을 얻었다. (마지막 <a>태그는 다음페이지를 뜻하는 태그므로 [:-1]로 배제시켰다.)
def extract_job(css):
company = css.find('a', {'class': 'name dev_view'})
description = css.find('a', {'class': 'title dev_view'})
loacl = css.find('span', {'class': 'loc long'})
if company and description and loacl is not None:
return f"{company.text}({loacl.text}) : {description['title']} \nhttps://www.jobkorea.co.kr/{company['href']}"
직업정보에서 회사이름, 제목, 위치, 그리고 구직페이지로 가는 링크주소를 추출했다.
그리고 "회사이름(위치) : 설명
구직페이지 링크주소 "
형식으로 배치하였다.
def extract_final_job(last_page):
list = []
for page in range(last_page):
print(f'여기는 페이지{page+1}')
page = requests.get(f'{f_url}No={last_page}')
soup = BeautifulSoup(page.text, 'html.parser')
all_job_container = soup.find_all('div', {'class': 'post'})
for job_container in all_job_container:
job = extract_job(job_container)
if job is None:
continue
list.append(job)
return list
이건 모든 페이지의 정보를 다 추출해야하가에 range함수를 사용하였다.
각 페이지 링크는 url끝에 No=(페이지 수)에 따라 다르다.
마지막으로 모든 정보를 담은 배열인 list를 리턴하면 된다.