셀레니움은 브라우저 자동화, 크롤링과 관련된 라이브러리입니다. 보통 윈도우 익스플로러같은 경우 DOM이라는 것을 통해 제어하는데요, 크롬이나 파이어폭스같은 경우 웹드라이버를 따로 지원해줘서 셀레니움을 통해 제어가 가능합니다. 간단한 웹 접속, 스크롤하는것 부터 웹사이트 로그인, 버튼 누르기, 특정 하이퍼링크 누르기 등의 기능으로 크롤링(Crawling) 이나 웹 매크로(Macro)등 다양한 작업을 할 수 있습니다. 그 외에도 세분화 하는 경우엔 프록시 접속하기, 리캡차 넘어가기 등등도 가능하다고 합니다.
DOM이란?
DOM은 Document Object Model로, 한국어로는 문서 객체 모델입니다. DOM은 HTML문서 구조를 말하는데요. HTML 문서의 기본 구조는 최상위 객체로 <html>이 있으며, 그 하위 객체로는 <head>와 <body>가 있습니다. 예를 들어, 자바스크립트를 이용해 이미지의 src속성을 바꾸고 싶다면 지정된 <img>를 선택해 src속성을 바꿔야 합니다. 이 때 지정요소를 제대로 선택해서 가져오려면 문서 객체의 구조를 잘 이해하고 있어야 합니다. 이렇게 문서객체모델에서는 HTML의 모든 요소들을 문서 객체로 선택하여 자유롭게 속성을 바꿀 수 있고, 선택한 문서 객체에 원하는 스타일(CSS)을 적용할 수도 있습니다.
<정리>
HTML은 웹의 구조
CSS는 웹의 디자인
JS(자바스크립트)는 웹의 동작
DOM은 HTML문서 구조
솔룩스 2차 온라인 세미나에서는 Selenium을 사용해 자동으로 솔룩스 공식사이트에 접속하여 댓글다는 법을 알아보겠습니다. 이번 세미나는 코드를 실행할 때마다 시각적으로 바로바로 자동화 과정을 볼 수 있어 여러분이 조금 더 즐겁게 코딩하실 것 같습니다:) 그럼 본격적으로 기본 환경 세팅하러 가볼까요?
1.2 Pycharm으로 Selenium 설치
저번 세미나에서 pycharm을 설치하고 사용했던 거 기억나시나요?
이번 세미나에서도 pycharm을 사용하겠습니다.
먼저, pycharm 실행해주세요!
pycharm 실행
Selenium을 설치하기 위해
1. File -> Settings 들어가주세요!
Selenium 설치 과정 1
2. Settings 창에서 Project Interpreter -> 오른쪽에 있는 + 버튼 클릭!
Selenium 설치 과정 2
3. selenium 검색 -> Install Package 클릭
Selenium 설치 과정 3
4. 아래의 사진과 같이 Package 'selenium' installed successfully 라고 뜨면 selenium 설치 성공!
Selenium 설치 과정 4
1.3 Chrome Driver(크롬 드라이버) 설치
다음으로, 크롬드라이버를 설치해봅시다.
Selenium은 webdriver 라는 것을 통해 디바이스에 설치된 브라우저들을 제어할 수 있습니다.
이번 세미나에서는 Chrome을 사용해 볼 예정입니다.
먼저, 크롬의 버전에 맞게 크롬드라이버를 깔아야 하기 때문에
크롬 버전을 확인하기 위해 오른쪽 위의 점 세개 -> 도움말 -> Chrome 정보에 들어가봅시다.
크롬 버전 확인하는 방법
아래와 같이 크롬의 버전을 확인할 수 있습니다. 저같은 경우에는 버전이 81.0.4044.138 이네요.
설치한 셀레니움 크롬 드라이버가 제대로 작동하는지 알아보겠습니다! 1. Pycharm 을 실행하셔서 File -> New project -> 프로젝트이름 selenium -> Create 해주세요.
셀레니움 크롬 드라이버 작동 확인 1
2. 만든 Selenium 프로젝트 -> New -> Python File -> 파일이름은 test 로 해서 새 파일 생성해줍니다.
셀레니움 크롬 드라이버 작동 확인 2-1셀레니움 크롬 드라이버 작동 확인 2-2
Selenium은 webdriver api를 통해 브라우저를 제어합니다.
1. 우선 webdriver를 import 해줍니다.
파이썬에서 import 는 어떤 모듈과 패키지를 가져올 때 사용합니다.
모듈 : 특정 기능을 .py 파일 단위로 작성한 것 패키지 : 특정 기능과 관련된 여러 모듈을 묶은 것
random, turtle, math, pickle 등이 바로 모듈과 패키지인데요. from import 형식은 패키지, 모듈에서 일부만 가져오는 것입니다. 즉, "selenium 모듈에서 webdriver 기능 가져오기" 라는 의미입니다.
from selenium import webdriver # selenium 모듈에서 webdriver 기능 가져오기
2. 이제, driver 라는 이름의 webdriver 객체를 만들어줄 차례인데요.
그 전에 객체의 개념에 대해 간단하게 설명하고 넘어가겠습니다.
객체란?
객체는 어떠한 속성값과 행동을 가지고 있는 데이터입니다. 파이썬의 모든것들(숫자, 문자, 함수 등)은 여러 속성과 행동을 가지고 있는 데이터입니다. 실제 세상에서도 object는 그 본연의 추상적인 개념만 가지고 있는것이 아니라, 다양한 정보와 행동을 가지고 있습니다. 자동차를 가지고 한번 생각을 해보겠습니다. 자동차를 원동기를 장치하여 그 동력으로 바퀴를 굴려서 철길이나 가설된 선에 의하지 아니하고 땅 위를 움직이도록 만든 차. 라는 사전적 의미만을 담는것이 아니라
내가 탈 수 있고, 앞으로 뒤로 움직이는 행동을 할 수 있고 차 앞뒤에 있는 차량번호 정보와 디자인과 제조사, 모델명 정보도 있습니다. 이러한 정보와 행위를 묶은 데이터를 하나의 자동차 객체로 볼 수 있습니다.
자동차라는 객체를 위와 같이 그림과 텍스트로 표현해보면, 자동차 그 자체로 정보가 있고(제조사 정보, 차량 번호, 차량 크기), 행위가 있습니다(앞으로 이동, 멈추기) '뭐지? 당연한 소리를 하네?' 라고 생각하실 수 있습니다.
그럼 추상적인 개념으로 생각을 해보겠습니다. 문자 'a'는 파이썬에서 다음과 같이 객체화 시킵니다.
일부분만 나타냈습니다. 파이썬은 문자 객체에 더 많은 속성과 행동을 넣어둡니다.
파이썬에서는 단순하게 'a'라는 문자를 표현하는것으로 끝내는게 아니라, 'a'라는 문자 자체를 객체로 만들고 다양한 속성과 행동을 넣어뒀습니다. 이러한 객체들이 가진 속성중에 상태들은 value, 또는 attribute라고 부릅니다. 또 객체가 가진 행동들은 method(메소드)라고 부릅니다.
HTML 은 Hyper Text Markup Language의 약자로 웹 브라우저를 통해 사용자에게 보이는 웹 문서를 작성하기 위한 언어입니다. 여기서 Hyper Text(하이퍼 텍스트)란 링크가 걸린 해당 컨텐츠(텍스트 및 이미지)를 클릭하게 될 경우 이동하게 만든 것으로 HTML은 하이퍼 텍스트의 정보를 표현하는 언어입니다.
너무 어렵게 생각하지 마시고, 웹사이트는 HTML 로 뼈대를 이루고 있다고 생각하시고 넘어가도 됩니다.