본문 바로가기

카테고리 없음

[selenium]headless: 창을 띄우지 않고 웹 컨트롤 하는 법

beomi.github.io/gb-crawling/posts/2017-09-28-HowToMakeWebCrawler-Headless-Chrome.html

 

Headless 크롬으로 크롤링하기 · GitBook

Headless라는 용어는 '창이 없는'과 같다고 이해하시면 됩니다. 여러분이 브라우저(크롬 등)을 이용해 인터넷을 브라우징 할 때 기본적으로 창이 뜨고 HTML파일을 불러오고, CSS파일을 불러와 어떤

beomi.github.io

www.hanumoka.net/2020/07/06/python-20200706-python-selenium-headless/

 

selenium headless기능 적용하기

들어가기저번에 Selenium과 chrom web driver를 사용해서 naver bike에서 바이크 브랜드 정보를 크롤링 하는 예제를 진행 했다. 뭔가 아쉬운 점은, 크롤링을 할 때마다, web driver에 의해서 크롬 브라우저가

www.hanumoka.net

이 블로그를 보고 headless로 동작하더라도 충분히 동적인 부분을 컨트롤 가능한데 왜 난 안되는가에서 창의 사이즈 때문이라는 힌트를 얻을 수 있었다.

 

내가 알아낸 점.

headless방법을 사용할 때는 창의 크기를 맞춰줘야한다.

웹사이트에서는 창의 크기가 충분히 크면 자동으로 보이는 요소가 있고, 창이 작을 때는 숨는 요소가 있다.

이럴 때 요소가 숨어버리면 css selector로 찾지를 못한다.

 

options.add_argument('--start-fullscreen') 이것이 백그라운드에서 화면의 크기를 키워줄 줄 알았는데 headless에서는 동작하지 않는 듯 하다.

-> headless로 동작할 때 --start-fullscreen은 동작하지 않는다.

 

options.add_argument('window-size=1920x1080')를 통해서 사이즈를 키워주고나니깐 올바르게 동작했다

 

몇 번 실행이 안되는 것을 보고 바로 혹시 이것 때문인가 했는데,, 맞췄다. 개쩌는 듯.

 

 

(아마 JS가 코드를 계속 다르게 생성하기 때문인듯? 사람들이 css selector보다 xpath를 자주 사용하던데 그래서 그런가??, 그게 더 좋나?

찾아봐야 할 듯. )

 

headless를 하기 전에는 1920*1080이 아니라 start-fullscreen으로 진행했다. headless가 아닌 창을 띄우는 방식으로 실행할 때는 1920*1080은 동작하지 않는다.. start-fullscreen은 잘 동작함..