/
Headless chrome 으로 크롤링(crawling)하기

Headless chrome 으로 크롤링(crawling)하기

Chrome 59 부터는 명령행에서 옵션으로 실행할 수 있는 헤드리스 모드가 추가되었습니다. 즉 별도의 GUI 창이 뜨지 않고 사이트에 접속해서 페이지를 받는등의 작업을 실행할 수 있습니다.

헤드리스 크롬을 사용하면 정확히 페이지를 렌더링할 수 있으므로 크롤러 제작이나 업무 자동화시 유용합니다.

크롬 버전과 설치 정보는 URL 에 chrome://version/ 를 입력하면 확인할 수 있습니다.


설치

사용하는 운영체제에 맞는 chrome 을 설치하면 헤드리스 모드를 사용할 수 있으며 리눅스에 설치할 경우 Linux 에 크롬(Chrome) 브라우저 설치하기 를 참고하세요.


alias 등록

설치가 끝났으면 사용하기 쉽도록 초기화 파일에 alias 로 등록해 줍니다.


Linux/OS X 에서는 .bash_profile 이나 .zshrc 에 다음 alias 추가합니다.

alias chrome='google-chrome' 
alias hchrome='chrome --headless'


Windows 는 PowerShell 에서 다음 function 을 설정해 주면 편리하게 사용할 수 있습니다.

기본 파라미터 설정하는 방법을 몰라서 chrome 만 alias 해서 사용하고 있습니다. 아래 예시에서 hchrome  명령어는 chrome --headless 로 바꿔서 실행하면 됩니다.

cmder alias
Set-Alias chrome "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
function  hchrome { 
	chrome --headless $args 
}


사용


pdf 로 저장

--print-to-pdf 옵션을 사용하면 웹 사이트를 PDF 로 저장할 수 있습니다.

hchrome --print-to-pdf=d:\naver.pdf http://naver.com

Windows 에서는 --print-to-pdf 옵션 뒤에 저장할 파일을 절대 경로로 지정해야 정상 동작합니다.

Windows 에서 headless 모드로 실행시 아무 결과가 안나오면 --enable-logging  옵션을 추가해서 실행해 보면 실행 결과를 알수 있습니다.

hchrome --screenshot https://www.chromestatus.com/ --enable-logging

C:\Users\lesstif\ [0420/100443.104:WARNING:headless_browser_main_parts.cc(83)] Cannot create Pref Service with no user data dir.
[0420/100445.050:ERROR:headless_shell.cc(592)] Writing to file screenshot.png was unsuccessful, could not open file: FILE_ERROR_ACCESS_DENIED


dom 출력

--dump-dom 옵션을 사용하면 document.body.innerHTML 를 표준 출력(stdout) 에 프린트합니다.

hchrome --dump-dom https://naver.com


screen shot

--screenshot 옵션 뒤에 저장할 파일명을 주면 웹 사이트를 스트린샷으로 만들어서 저장합니다.

hchrome --screenshot https://www.chromestatus.com/


저장된 스크린샷 해상도를 수정할 경우 --window-size 옵션을 지정할 수 있습니다.

# Size of a standard letterhead.
hchrome --screenshot=c:/users/lesstif/scr-letter.png --window-size=1280,1696 https://www.chromestatus.com/
# Nexus 5x
hchrome --screenshot=c:/users/lesstif/scr-next.png --window-size=412,732 https://www.chromestatus.com/


REPL mode (read-eval-print loop)

run with --repl flag

$ chrome --headless --disable-gpu --repl --crash-dumps-dir=./tmp https://www.chromestatus.com/


Ref

Related content

Linux 에 크롬(Chrome) 브라우저 설치하기
Linux 에 크롬(Chrome) 브라우저 설치하기
More like this
엣지 브라우저(Edge Browser) 주소 창 입력시 다운될때 해결방법
엣지 브라우저(Edge Browser) 주소 창 입력시 다운될때 해결방법
More like this
MS Internet Explorer 일 경우 호환성 보기 끄기 - apache httpd mod_header 와 mod_env 사용
MS Internet Explorer 일 경우 호환성 보기 끄기 - apache httpd mod_header 와 mod_env 사용
More like this
https 페이지내 http 컨텐츠가 있어서 IE에서 보안 콘텐츠만 표시됩니다. 에러 처리
https 페이지내 http 컨텐츠가 있어서 IE에서 보안 콘텐츠만 표시됩니다. 에러 처리
More like this
동일 출처 정책
동일 출처 정책
More like this