Step by Security Study

[기초] 셀레니움 selenium 본문

프로그래밍/Python

[기초] 셀레니움 selenium

jooon99 2023. 3. 5. 05:18

requests 모듈의 한계

1. 로그인이 필요한 사이트의 경우 크롤링이 어렵다. (가능은 하지만 세션 처리 부분이 어려움)

2. 동적으로 HTML을 만드는 경우

 - 스크롤 하거나 클릭하면 데이터가 생성됨 → URL 주소가 변경되지 않았는데 데이터가 변함

 - 표, 테이블 형태의 데이터

 

웹 애플리케이션 테스트를 위한 도구로 브라우저를 실제로 띄어서 사람처럼 동작하도록 만들 수 있다. 파이썬에서 http를 요청했을 경우 봇(Bot)이라고 판단될 경우 접속이 차단되는 경우가 있다. 이런 경우를 우회하기 위해 실제 웹 브라우저를 띄운 후에 http 요청을 보내는 것이다. 즉, 봇이 아닌 사람인척을 하는 것이다. 

 

셀레니움 설치

selenium 모듈 설치

 

Chrome Driver 파일 다운로드

브라우저를 제어하기 위해 웹 드라이버 다운로드

 

[1] Chrome 접속 > 도움말 > Chrome 정보 클릭

 

[2] Chrome 버전 확인

 

[3] Chrome Driver 다운로드 사이트 접속 (Chrome 검색 > ‘크롬 드라이버’)

https://chromedriver.chromium.org/downloads

 

ChromeDriver - WebDriver for Chrome - Downloads

Current Releases If you are using Chrome version 111, please download ChromeDriver 111.0.5563.41 If you are using Chrome version 110, please download ChromeDriver 110.0.5481.77 If you are using Chrome version 109, please download ChromeDriver 109.0.5414.74

chromedriver.chromium.org

 

[4] 버전에 맞는 Driver 설치

 

 

 

실습

selenium 을 이용한 네이버 자동 접속

# 모듈 선언
from selenium import webdriver      # seenium 모듈에서 webdriver 함수 사용하겠다.

# chromdriver가 설치된 위치를 driver라는 변수에 저장
# webdriver.Chrome 함수의 결과를 driver라는 변수에 저장
# ./ 는 현재 폴더를 의미
driver = webdriver.Chrome('./chromdriver')

# get 함수를 이용해 네이버에 접속 (웹사이트 열기)
driver.get('http://naver.com')

#
print(driver.page_source)

 

네이버 자동 로그인

from selenium import webdriver

friver = webdriver.Chrome('.chromdriver')

# .get - URL 이동 기능
path='https://nid.naver.com/nidlogin.login?mode=form&url=https%3A%2F%2Fwww.naver.com'
driver.get('path')

# execute_script 함수를 사용하여 자바스크립트로 아이디, 패스워드를 넘겨준다.
driver.execute_script("document.getElementsByName('id')[0].value='실제 ID'")
driver.execute_script("document.getElementsByName('id')[0].value='실제 PW'")

# '//*[@id="log.login"]' 이 경로로 접근하여 로그인 클릭
driver.find_element_by_xpath('//*[@id="log.login"]').click()

# 브라우저 닫기
driver.close()

 

 

 

 

 

 

'프로그래밍 > Python' 카테고리의 다른 글

크롤링을 이용한 복권 당첨 번호 가져오기  (1) 2023.03.05
[기초] 크롤링 - requests, bs4  (1) 2023.03.05
[기초] 모듈 Module  (0) 2023.03.05
[기초] 파일 읽고 쓰기  (0) 2023.03.05
[기초] 함수 Definition  (1) 2023.03.05