이번에는 단순히 정보를 받아오는데 그치치 않고, 능동적으로 브라우저를 제어하는 방법에 대해 알아보겠습니다. (모든 포스팅은 jupyter notebook 기준으로 설명합니다.)
- 먼저 웹브라우저 제어 도구인 selenium을 설치합니다.
!pip install selenium
- 크롬 브라우저 드라이버를 설치합니다.
여기에서 크롬용 드라이버를 다운받습니다. 다운로드 페이지 하단에 크롬브라우저를 택하시고, 컴퓨터에 깔린 크롬 버전에 받게 설치하시면 됩니다. (크롬 버전 확인: 구글에 my user agent를 검색하세요.)
- 아래 코드를 실행하여 크롬브라우저를 열어봅니다.
<table class="colorscripter-code-table" style="margin: 0; padding: 0; border: none; background-color: #fafafa; border-radius: 4px;" cellspacing="0" cellpadding="0"><tbody><tr><td style="padding: 6px; border-right: 2px solid #e5e5e5;"><div style="margin: 0; padding: 0; word-break: normal; text-align: right; color: #666; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;"><div style="line-height: 130%;">1</div><div style="line-height: 130%;">2</div></div></td><td style="padding: 6px 0;"><div style="margin: 0; padding: 0; color: #010101; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;"><div style="padding: 0 6px; white-space: pre; line-height: 130%;"><span>from</span> selenium <span>import</span> webdriver</div><div style="padding: 0 6px; white-space: pre; line-height: 130%;">browser <span></span><span>=</span> webdriver.Chrome(<span>'/PATH/chromedriver'</span>)</div></div></td><td style="vertical-align: bottom; padding: 0 2px 4px 0;"><a style="text-decoration: none; color: white;" href="http://colorscripter.com/info#e" target="_blank" rel="noopener"><span style="font-size: 9px; word-break: normal; background-color: #e5e5e5; color: white; border-radius: 10px; padding: 1px;">cs</span></a></td></tr></tbody></table>
제어가 가능한 크롬브라우저가 열리는 것을 확인할 수 있습니다. 윈도우는 별도의 경로 설정이 불필요하나, 맥은 위와 같이 2번에서 다운받은 파일의 경로설정이 필요합니다.
- 지정한 주소로 이동시킵니다.
<table class="colorscripter-code-table" style="margin: 0; padding: 0; border: none; background-color: #fafafa; border-radius: 4px;" cellspacing="0" cellpadding="0"><tbody><tr><td style="padding: 6px; border-right: 2px solid #e5e5e5;"><div style="margin: 0; padding: 0; word-break: normal; text-align: right; color: #666; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;"><div style="line-height: 130%;">1</div><div style="line-height: 130%;">2</div></div></td><td style="padding: 6px 0;"><div style="margin: 0; padding: 0; color: #010101; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;"><div style="padding: 0 6px; white-space: pre; line-height: 130%;">url <span></span><span>=</span> <span>'https://hyongdoc.tistory.com'</span></div><div style="padding: 0 6px; white-space: pre; line-height: 130%;">browser.get(url)</div></div></td><td style="vertical-align: bottom; padding: 0 2px 4px 0;"><a style="text-decoration: none; color: white;" href="http://colorscripter.com/info#e" target="_blank" rel="noopener"><span style="font-size: 9px; word-break: normal; background-color: #e5e5e5; color: white; border-radius: 10px; padding: 1px;">cs</span></a></td></tr></tbody></table>
설정된 URL로 창이 이동하는 것을 볼 수 있습니다. 여기에서 블로그 타이틀을 클릭해보겠습니다.
- 블로그 타이틀에 해당하는 cssSelector찾기
div.box_header 안에 a.link_logo 인 것을 찾았습니다.
- css 설렉터에 해당하는 객체 클릭하기
<table class="colorscripter-code-table" style="margin: 0; padding: 0; border: none; background-color: #fafafa; border-radius: 4px;" cellspacing="0" cellpadding="0"><tbody><tr><td style="padding: 6px; border-right: 2px solid #e5e5e5;"><div style="margin: 0; padding: 0; word-break: normal; text-align: right; color: #666; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;"><div style="line-height: 130%;">1</div><div style="line-height: 130%;">2</div></div></td><td style="padding: 6px 0;"><div style="margin: 0; padding: 0; color: #010101; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;"><div style="padding: 0 6px; white-space: pre; line-height: 130%;">blog_title <span></span><span>=</span> browser.find_elements_by_css_selector(<span>'div.box_header a.link_logo'</span>)</div><div style="padding: 0 6px; white-space: pre; line-height: 130%;">blog_title[<span>0</span>].click()</div></div><div style="text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;"><a style="color: #e5e5e5; text-decoration: none;" href="http://colorscripter.com/info#e" target="_blank" rel="noopener">Colored by Color Scripter</a></div></td><td style="vertical-align: bottom; padding: 0 2px 4px 0;"><a style="text-decoration: none; color: white;" href="http://colorscripter.com/info#e" target="_blank" rel="noopener"><span style="font-size: 9px; word-break: normal; background-color: #e5e5e5; color: white; border-radius: 10px; padding: 1px;">cs</span></a></td></tr></tbody></table>
이와 같이 click() 메소드로 클릭명령을 내릴 수 있습니다.
'Developer > Python' 카테고리의 다른 글
[Python] 공적 마스크 API 활용하여 지도로 구현하기 (Folium 라이브러리 적용) (0) | 2020.03.16 |
---|---|
Python 지도 라이브러리, Folium 사용법 (0) | 2020.01.04 |
[Python] 웹스크랩핑하기 - link주소 따오기 (attrib) (254) | 2019.05.24 |
[Python] 웹 스크랩핑하기 (252) | 2019.05.24 |
[Python] 한글 인코딩 오류 났을 때 (278) | 2019.05.24 |
댓글