관리 메뉴

꿈 많은 사람의 이야기

linux(centos 7)에서 chrome driver로 headless 웹 크롤러(web crawler) 개발하기 본문

python

linux(centos 7)에서 chrome driver로 headless 웹 크롤러(web crawler) 개발하기

이수진의 블로그 이수진의 블로그 2019. 7. 29. 21:26

가끔 웹 크롤러를 개발하다 보면 이런 상황이 있습니다.

윈도우에서 web crawler를 개발하면 당연히 화면이 있죠?

여기서 화면이라는 것은 window가 있다는 것입니다. 즉, 크롬 브라우저를 띄울 수 있고 그걸 볼 수 있습니다.

이러한 환경은 ubuntu나 centos에서도 마찬가지입니다.

 

하지만, 모든 환경이 다 이렇지 않습니다.

linux 계열의 서버를 사용할 때 이런 window 개념이 없을 수도 있습니다.

말 그대로 kernel 상태만 주어지고 display가 없는 상태이죠

그럼 이 display가 없는 상태에서 python seleinum으로 웹 크롤러를 어떻게 개발할까요?

 

selenium은 web browser를 화면에 띄우고 거기서 html 데이터를 가지고 옵니다.

근데 이 display가 없으면? selenium을 활용한 웹 크롤러는 동작이 되지 않습니다.

 

이럴 때 사용하는 방법이 있습니다.

linux 계열에서 chromedriver를 활용해서 headless web crawler를 개발하면 됩니다.

chromedriver를 활용하여 headless 웹 크롤러를 만들면 display가 없이도 크롤러를 개발 할 수 있습니다.

 

그 방법에 대해서 알아보죠

 

 

저는 centos 7 환경에서 headless 크롤러를 만들어봅니다.

먼저 chrome driver를 받아야합니다.

sudo vi /etc/yum.repos.d/google-chrome.repo 파일을 하나 만듭니다.

 

 

그리고 위 사진과 같이

[google-chrome]

에 해당되는 내용을 채워넣습니다.

 

 

자! 이제 sudo yum install google-chrome-stable을 통해 google chrome을 받아줍니다.

 

 

잘 받아졌으면 google-chrome --version을 통해 버전을 확인할 수 있습니다.

 

자! 이제 구글에 chromedriver를 검색합니다.

그러면 chromedriver를 받을 수 있습니다. 이 chromedriver를 받아야 headless crawler를 개발할 수 있습니다.

 

 

위에서 확인했던 google chrome 버전과 일치하는 webdriver를 받아줍니다.

그러므로 저 주소를 복사해서

 

 

wget을 이용해서 다운을 받아줍니다.

다운을 다 받았으면 unzip을 해줍니다.

 

 

다음은

sudo mv chromedriver /usr/local/bin

으로 chromedriver를 옮겨줍니다.

 

자! 이제 셋팅은 끝났습니다.

실제 파이썬 코드를 적용시키면

 

 

web crawler를 개발할 때 필요한 selenium 부분은 전부 일치합니다.

거기서 변하는 것은 없습니다.

즉, 윈도우 환경에서 잘 됐던 selenium crawler 상태에서 위와 같은 내용만 추가하면 됩니다.

 

from pyvirtualdisplay import Disply

from selenium.webdriver.chrome.options import Options

chrome_options = Options()

display = Display(visible = 0, size = ())

display.start()

 

chrome_options = Options()

chrome_options.add_argument('--headless')

chrome_options.add_argument('disable~~')

 

등 이렇게 필요한 설정을 해주시면 됩니다.

 

 

 

그리고 driver를 불러올 때 webdriver.Chrom(executable_path = '/usr/local/bin/chromedriver', chrome_options=chrome_options)

를 통해 아까 다운 받았던 chromedriver를 연결해주고 option을 셋팅해주면 됩니다.

 

이렇게 하시면 headless web crawler가 완성이 됩니다!

 

 

0 Comments
댓글쓰기 폼