/ EXITEM

R언어를 이용한 사람인 크롤링

R언어를 이용한 사람인 크롤링

어떤 데이터인가?

국내 채용공고 사이트의 공고(구인)

회사명, 공고제목, 즐겨찾기 수, 조회수, 경력, 학력, 나이/성별, 급여, 회사명, 공고제목, 즐겨찾기 수, 조회수, 경력, 학력, 나이/성별, 급여, 근무형태, 직급/직책, 근무일시, 근무지역, 시작일, 마감일, 우대사항, 지원금/보험, 급여제도, 선물, 교육/생활, 근무 환경, 출퇴근, 리프레시, 조직문화, 홈페이지접속, 필수사항, 자사양식다운수, 근무형태, 직급/직책, 근무일시, 근무지역, 시작일, 마감일, 우대사항, 지원금/보험, 급여제도, 선물, 교육/생활, 근무 환경, 출퇴근, 리프레시, 조직문화, 홈페이지접속, 필수사항, 자사양식다운수 , 그 외의 기업정보 도 있다.

이 데이터가 왜 유용한가?

요즘에는 구인을 할때에는 사람들은 인터넷, 앱 사용 등 구인구직 사이트를 이용하여 기업의 정보, 채용공고의 정보를 얻습니다. 현재 나와있는 사이트나 앱 등도 잘 사용되고 있지만 데이터화하여 추천 정보나 공고의 정보를 다른 방향으로 잘 표현 할 수 있다.


실제 크롤링한 데이터베이스로 활용한 사례

실제로 ‘사람인’이 처음에 채용공고를 얻는 방법은 크롤링이었습니다. ‘잡코리아’의 사이트를 크롤링하여 추가적으로 방법을 바꾸었더니 아래와 같은 결과를 얻었습니다. 2016년 사람인 광고 수상작에서 발췌했습니다.

사람인1

사람인

사진에서 보듯이 크롤링을 통해 채용공고나 기업의 정보를 데이터화하여 기능의 추가만으로 원래 있던 프로그램들을 향상 시킬 수 있습니다. 그 후 ‘잡코리아’도 시스템을 변화하여 ‘사람인’과 이용하는 정도가 비슷해졌습니다.

사례에서 볼 수 있듯이 채용공고를 데이터화 하여 가지고 있다면 다른 방향으로 생각해 볼 수 있는 유용한 데이터라고 생각합니다.

크롤링 할 때 주의해야 할 실제 사건

하지만 법적문제도 생각해야한다는 것을 조사하면서 알았습니다.

사람인_잡코리아

‘사람인’에서 크롤링 할 때 ‘잡코리아’에서 IP차단을 했지만 프로그램을 이용해 IP를 바꿔가면서 크롤링 했고 그 데이터를 통해 ‘잡코리아’를 뛰어넘어 막대한 경제적 피해 를 줬기 때문에 ‘잡코리아’가 승소하게 되었다.

주의해야 하는 것 : 해당 사이트 하단에 표시가 되어 있거나 서비스 공약에 거부 의사가 있다면 주의, IP차단 의사가 있다면 주의. 무조건 불법이 아닌 막대한 피해를 줬을 때 소송하여 불법으로 인정됩니다.


실제 구현

R언어를 이용해서 직접 구현한다.

채용공고 정보 수집(구인구직 사이트에서 크롤링)

이용 사이트 : 사람인
추가할 사이트 : 워크넷
관련있지만 크롤링하는데에 문제가 있어 이용하지 못하는 사이트 : 잡투게더, 잡코리아
정보가 적고 사용자가 적은 사이트 : 인쿠르트, 커리어


사람인

요약

  • 자바스크립트로 이루어져있어 phantomjs 프로그램을 이용하여 html 파일로 저장한다.

  • html을 rvest 패키지를 이용해서 크롤링

    • 총 페이지의 수를 구함
    • 각 페이지의 공고의 url을 구함
    • 각 url의 정보를 크롤링

      데이터를 가져와야하는 사이트 사진1이동

공채의 명가

데이터를 가져와야하는 사이트 사진2이동

공고1


공고2

과정

  • ‘PantomJs’ 프로그램을 사용해서 html 파일로 저장. JShtml

    • 총 개수, 총 페이지수를 구해서 모든 공고의 상세보기 URL 번호 저장. num_total.txt파일

      • http://www.saramin.co.kr/zf_user/jobs/relay/view?isMypage=no&rec_idx=36015093&recommend_ids=eJxVzrsNgFAMQ9Fp6F%2FifGsGYf8tgM4uj65iBXUyzP0p86tvfAQmmFstjGRmghlrTNdqWq1l6vuE6LspjGHOSG3IbZ39%2BQKwQS%2BW&view_type=public-recruit&gz=1&t_ref=public-recruit#seq=0
    • 해당 URL을 이용해서 각 html 파일로 저장.Html파일

  • Html 파일을 ‘rvest’ 패키지를 사용해서 읽는다.
    • 필요한 정보들을 rvest와 gsub, grep, gregexpr, strsplit등 텍스트를 다루는 함수, match, Sys.sleep, write.csv등 그 외의 필요한 함수들을 사용하여 분류하여 저장.
  • 데이터를 500개씩 나누어 저장.csv파일

자동화

위의 정보 중 URL 번호를 저장했는데 앞으로 받는 정보 중 겹치는 정보는 여기서 판별한다. 매일 반복해서 정보를 얻어 추가 시킬 수 있다.

이번 느낀점

  1. 데이터를 읽어오는 것.
  2. 데이터를 구별하고 문자열 정리.
  3. 분류의 기준을 정하는 것.

시간이 오래걸렸지만 이번 경험으로 앞으로는 데이터를 얻는데 큰 도움이 된 것 같습니다.

  • 크롤링이 크게 어렵다고 생각하지 않았는데 실제 기업들을 상대로 크롤링을 하려고 하니 평소에 해오던 크롤링과는 달랐습니다. 생각보다 시간도 많이 들고 방법도 공부가 많이 필요했습니다.
  • 그동안 저는 만들어진 데이터를 사용하기만 했습니다. 이번에는 직접 데이터를 만들어 보았습니다. 데이터를 분석하는 것도 중요한데 데이터가 없으면 아무것도 할 수가 없다는 것을 깨닫고 데이터의 소중함을 알 수 있는 경험이 되었습니다.

다음 계획

  1. ‘사람인’ 사이트에서 전에 했던 데이터까지 얻는 곳을 알아 두어서 추가로 정보를 저장.
  2. ‘워크넷(고용노동부)’ 사이트까지 자동화 시키는 것.(한개의 사이트로는 부족하다고 생각.)
  3. 각 사이트마다 형태가 다를 텐데 그 분류를 비슷하게 하여 가능한 색인이 잘 되도록 수정.

R코드

결과 자료

result.zip