본문 바로가기

Python/Crawling

[Python웹크롤링] Selenium을 이용해 사람인 채용정보 크롤링

반응형

웹크롤링 강의를 배우면서 가장 유용한 패키지 두개를 꼽으라고 하면 BeautifulSoup와 Selenium이라고 할 수 있겠다.

설연휴 전에 강의를 들어 배웠었지만 설연휴동안 일하면서 복습도...공부도... 쉬다보니 연휴가 끝나니 머리가 백지상태 처럼 되었었다.. 그래서 다시 토이프로젝트 처럼 복습차원 겸 다시 웹크롤링 예제를 만들어 보려고 한다. 요즘 노마드 코더 아카데미를 이용해서 웹크롤링에 대한 다른강의를 또 듣고 있는데 패스트 캠퍼스와는 다른 방법을 쓰는 거 같기도 해서 신기하기도 했지만 더 어지러워진 것 같다...

 

이번에 하기로 한 것은 '사람인' 이라는 채용정보 사이트에서 '데이터 엔지니어'를 검색하고 나오는 '채용정보' 와 '채용마감시간' 이렇게 2가지 정보를 각각 연속적으로 크롤링 해보았다. 다음 페이지까지 크롤링 해보는 건 다음 토이프로젝트 때 해보려고 한다. 그리고 요즘 anaconda를 이용해 가상환경을 만들어 vscode에 코딩을 작성하고 있다. 

 

필요한 모듈 import

우선 가장 중요하다고 볼 수 있는 필요한 모듈을 임포트했다. 4번째 줄부터 차례로 모듈에 대해 설명하자면,

  • 1. 크롬 웹드라이버를 이용하기 위한 모듈
  • 2. 브라우저를 실행시켜 데이터를 가져오거나 페이지 이동시 대기시간을 갖기 위한 모듈
  • 3,4,5 브라우저가 접속하고 접속해서 다른 페이지로 이동하거나 커서를 이동해 클릭할 때까지 기다려주는 모듈
  • 6. 크롬 브라우저를 이용하기 위한 모듈
  • 7. HTML을 파싱하고 원하는 데이터를 갖고오기 위한 뷰티풀수프 모듈

크롬 브라우저로 접속

Options 모듈에서 add_argument라는 추가 인자를 이용해 headless 모드를 설정할 수 있다. 여기서 헤드리스란,

브라우저를 윈도우 창에 띄우지 않고 내부적으로 실행하는 옵션이다. 그리고 implicitly_wati(몇초) 를 입력하여

브라우저에 접속할 때까지 내부에서 대기를 해준다. 

여기서 주석처리한 브라우저 사이즈 설정은 헤드리스 모드를 풀면 윈도우 창에 뜨는 브라우저 창 사이즈를 조절해준다.

그리고 get방식을 이용하여 해당 url 인자를 넣고 접속을 요청한다.

bs4를 이용

해당 url에 접속해서 .page_source 함수를 이용해 전체 HTML을 살펴보자.. 출력내용을 보면 난해하다.. 그래서 이를 위해 뷰티풀 수프를 초기화주고 해당 URL의 HTML을 파싱한다. 그리고 해당 URL로 가서 크롬 개발자 도구를 이용해 CSS선택자를 이용해서 채용정보를 가져온다. 중간에 잘 했는지 살펴보기 위해서 cru_list를 출력해 본다.

 

채용정보와 채용마감 시간 출력

그리고 for문을 이용해서 채용정보와 채용마감시간을 출력하고 print() 공백 두번으로 한 건의 채용정보와 채용마감시간을 나누어 준다. 그리고 마지막으로 브라우저 종료를 시켜준다. 결과를 출력하면 밑의 사진과 같이 출력된다.

결과 출력

터미널 밑에 더 데이터가 존재하지만 전체 결과물에 대한 사진을 업로드 하는건 별로 의미가 없다고 생각되어서..

맨 위 화면만 캡쳐해서 올렸다. 이렇게 몇 줄 안 되는 코드를 작성하는 데에도 2시간이 넘게 걸린 것 같다... 다음에는 

한 페이지만이 아닌 여러 페이지까지 선택해서 출력해보겠다. 

반응형