(기초) 셀레늄 selenium

  • by

requests 모듈 제한

1. 로그인이 필요한 사이트의 경우 크롤링이 어렵습니다.

(가능하지만 세션 처리 부분이 어렵다)

2. 동적에서 HTML을 만드는 경우

– 스크롤 또는 클릭하면 데이터 생성 → URL 주소가 변경되지 않았지만 데이터가 변경됨

– 테이블, 테이블 형식의 데이터

웹 응용 프로그램을 테스트하는 도구로, 실제로 브라우저를 보고 사람처럼 작동할 수 있습니다.

Python에서 http를 요청하면 Bot으로 판단되면 연결이 끊어질 수 있습니다.

이런 경우를 우회하기 위해 실제 웹 브라우저를 띄운 뒤 http 요청을 보내는 것이다.

즉, 봇이 아닌 사람의 척을 하는 것이다.

셀레늄 설치

selenium 모듈 설치


Chrome Driver 파일 다운로드

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

(1) Chrome 방문 > 도움말 > Chrome 정보를 클릭


(2) Chrome 버전 확인


(3) Chrome 드라이버 다운로드 사이트 방문(Chrome 검색 > ‘Chrome Driver’)

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 10

chromedriver.chromium.org

(4) 버전에 맞는 드라이버 설치



연습

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()