관리자 권한(sudo) 없이 selenium 스크래핑(feat headless-chromium)
배경
selenium은 브라우저를 자동으로 컨트롤 하는 대표적인 library이다. 스크래핑(Scraping)은 크롤링(crawling)이라고도 하며, 웹에 있는 자료를 자동으로 추출하는 기술이다.
selenium과 web browser 그리고 python을 이용하면 웹에 있는 자료들을 자동으로 추출할 수 있다. 이를 위해서는 사용하는 컴퓨터에 python, selenium, 그리고 web browser가 설치되어 있어야 한다.
목적
최근 분석을 위해 서버를 대여 받았는데, 이 서버에는 분석을 위해 anaconda python이 설치되어 있었지만 관리자 권한(이하 sudo)은 주어지지 않았다. 이 서버에서 웹 상의 데이터를 수집하려면 어떻게 해야 할지 고민을 좀 해 보았다.
방법
다행스럽게 serverless 환경에서 사용할 수 있도록 배포된 chromium binary file을 알게 되었고, 이를 무설치 web browser로 이용할 수 있을 것 같았다.
일단 웹 페이지 스냅샷을 성공하였기에 그 방법을 정리해 본다. 여기에서는 anaconda python 환경을 중심으로 설명한다.
python 환경 만들기
먼저 프로젝트 환경을 만들어 보자. 이 과정은 생략해도 좋다.
selenium 설치
다음으로 selenium을 설치한다.
chromium binary & webdriver 설치
마지막으로 serverless headless-chromium binary file과 webdriver 파일을 원하는 위치에 저장한다. 여기에서는 ./TOOL
에 저장한다고 가정한다.
Scraping Code
이제 selenium_test.py
라는 간단한 프로그램을 작성하고 실행시켜 보자.
실행 결과 “http://www.python.org” 페이지의 스크린샷 “web_screenshot.png”이 생성되었다면 성공이다.
참고로 폴더와 파일 구조는 다음과 같다.
REF
browser 제어 개요
무설치 chromium 사용
Chromium 실행 위치 지정