Puppeteer로 크롤링 하기!Puppeteer란?사람들이 손쉽게 사용할 수 있는 크롤링 라이브러리로는 Selenium이 유명하다. 나도 여러 번 사용해 왔었고 간편한 방법으로 간단하게 크롤링을 할 수 있는 것은 맞으나.. 나는 Python이 익숙치 않아서 불편했었다. 그러던 중에 모두의 친구 구글이 해냈다. Show
Puppeteer는 2가지 버전이 존재한다.
설치 방법은 다음과 같다.
학교 글 크롤링 하기!금세 증발해 버리는 우리의 흥미를 돋우기 위해 예제를 만들면서 실습해 보자. 시도때도 없이 올라오는 공지 글을 보다 쉽게(?) 확인하기 위해 학교 공지 글을 크롤링 해보자! 중앙대 다빈치 SW 교육원에는 주기적으로 여러 프로그램 안내가 올라온다. 여기에 올라오는 글을 크롤링 하는 것이 우리의 목표다. 우리는 3줄 이상 읽지 않는 사람들이므로 간단하게 제목과 날짜, 신청 인원 등과 글의 링크만 크롤링 해보도록 하자! 프로젝트 설정프로젝트 폴더를 만들어 준 후에
이제 우리는 puppeteer 기본
기본적인 사용 형태는 다음과 같다. 하지만 이를 실행해보면 아무런 일이 일어나지 않는 것을 알 수 있다. 그 이유는 우리의 작업 과정을 편하게 확인하기 위해
그럼 창이 뜨고 네이버로 이동한 후 바로 사라지는 것을 볼 수 있다. 바로 사라지지 않게 하기 위해서 딜레이를 줘보자. 창을 열어보면 뭔가 네이버가 이상하게 잘려있는 것을 볼 수 있다. 그 이유는 page의 너무 보기 불편하니 크게 크게 설정해주자!
위 문장을 실행하면 페이지가 보여지는 크기를 바꿀 수 있다.
본격적인 크롤링 들어가기에 앞서서지금까지 한 건 그냥 브라우저 띄우는 것에 불과하다. 그럼 본격적인 크롤링을 해보자~ 해당 사이트에서 우린 저 글들 중에서 내용과 눌렀을 때 이동하는 링크를 가져와야 한다. $가 1개인지 2개인지는 한개를 찾느냐, 모두를 찾냐의
차이다. 공식 홈페이지를 찾아보면 인자로 Selector 즉, 선택자를 받는다는 것을 알 수 있다. 프론트에서 css를 만져본 경험이 있는 사람이라면 무엇인지 알고 있겠지만 처음 들어보거나 생소하다면 여기를 참고해보자. 다만 개념을 몰라도 크롤링을 할 수는 있다. 다만 중간에 문제가 생겼을 때 선택자 개념을 모르면 해결하기 어려울 수 있으니 기본적인 것이라도 살펴보고 하는 것을 추천한다. 그럼 선택자를 모르는데 어떻게 크롤링을 할 수 있느냐! 하면 바로 크롬의 개발자 도구를 사용하면 된다. F12를 눌러 개발자 도구를 키고 저기 마우스가 떠있는 아이콘을 클릭한다. 그럼 다음처럼 웹 페이지 요소를 선택할 수 있게 되는데 이를 누르면 HTML 파일에서 해당 요소를 나타내는 부분으로 이동한다. 따라서 이동한 요소의 부모나 자식에서 우리가 원하는 부분을 찾아서 우클릭 후 Copy selector를 눌러준다! 이후 아래와 같이 코드를 작성한다.
$ 뒤에 오는 선택자는 원하는 선택자를 찾아서 적당히 넣어주자!
즉 원하는 데이터를 얻어보자자 데이터를 추출하는 방법은 알아냈으니 정말 우리가 원하는 데이터를 얻어내보자! 우선 우리가 필요로 하는 데이터는 아래와 같은 구조를 하고 있다. 여러 태그 안에 들어있는 것을 확인할 수 있다. 제목의 경우 다음처럼 3번째 태그 안 <a> 태그에 들어있다.따라서 다음과 같은 코드로 추출 할 수 있다.
그럼 다음과 같은 데이터를 얻을 수 있다.
하지만 우리가 모아야 하는 데이터는 여러 줄이므로 아래와 같이 함수를 만들어 준다!
페이지 전환데이터를 다 얻었으니 다음 페이지로 넘어가야 한다. 페이지를 바꾸는 방법엔 여러가지가 있다.
전체 코드는 다음과 같다.
마무리간단하게 그와 관련된 메소드로 |