각진 세상에 둥근 춤을 추자

[Python] 가상 브라우저 크롤링 실습 (네이버 로그인) 본문

Python

[Python] 가상 브라우저 크롤링 실습 (네이버 로그인)

circle.j 2023. 1. 18. 13:05

가상 브라우저 크롤링을 통해 네이버 접속, 아이디-비밀번호 입력, 로그인까지 구현해 본다.

 

 

 


1. 모듈 설치 

 

pip install selenium
pip install webdriver-manager

 

[ERROR] zsh: command not found: pip  참고 [Error] - [Python] pip install ~ 에러

 

[Python] pip install ~ 에러

pip install ~ 입력 시 에러 (예) pip install onenpyxl, pip install requests, pip install bs4 ... zsh: command not found: pip ModuleNotFoundError: No module named 'pymysql' (1번 방법) pip3 install --upgrade pip (2번 방법) pip3 install (설치 프

this-circle-jeong.tistory.com

 

위 모듈을 설치 후 또는 이미 설치되어 있다면 본문 맨 윗부분에 import한다.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By

 

 


1. ChromeDriver 설치 

 

크롬 설정 - 도움말 - Chrome 정보

 

현재 사용 중인 크롬의 버전을 알아본다 (ex. 버전 108)

 

https://chromedriver.chromium.org/downloads

 

ChromeDriver - WebDriver for Chrome - Downloads

Current Releases If you are using Chrome version 110, please download ChromeDriver 110.0.5481.30 If you are using Chrome version 109, please download ChromeDriver 109.0.5414.74 If you are using Chrome version 108, please download ChromeDriver 108.0.5359.71

chromedriver.chromium.org

 

크롬 버전에 맞는 크롬 드라이버 클릭 

 

개인 PC에 맞는 버전 선택 다운로드 

  • 맥 인텔칩 : chromedriver_mac64.zip
  • 맥 m1: chromedriver_mac_arm64.zip
  • 윈도우: chromedriver_win32.zip

 

 

설치 완료 후 압축 파일을 해제한다.

 

해제한 위 파일을 파이썬 EXPLORER에 드래그한다.

 

 


2. 가상 브라우저 실행

 

chrome_options = Options()
chrome_options.add_experimental_option("detach", True)
browser = webdriver.Chrome('./chromedriver', options=chrome_options)

 


3. 네이버 이동 

 

browser.get('http://naver.com')

 

 

 


3. 로그인 버튼 클릭 

 

네이버 웹 페이지 상 로그인 버튼의 셀렉터를 복사한다. 

 

 

btnLogin = browser.find_element(By.CSS_SELECTOR, '#account > a')    # find_element: 선택자 함수
btnLogin.click()

 

 


4. 아이디- 비밀번호 입력

 

네이버 웹 페이지 상 아이디, 비밀번호의 셀렉터를 복사한다. 

 

 

아이디와 비밀번호는 편의상 각각 abcd, 1234로 작성한다.

input_id = browser.find_element(By.CSS_SELECTOR, '#id')
input_pw = browser.find_element(By.CSS_SELECTOR, '#pw')
input_id.send_keys('abcd')
input_pw.send_keys('1234')

 

 

 


5. 최종 로그인 버튼 클릭

 

네이버 웹 페이지 상 로그인 버튼의 셀렉터를 복사한다.

 

btnSubmit= browser.find_element(By.CSS_SELECTOR, '#log\.login')
btnSubmit.click()

 

만만하지 않은 네이버

캡차(보안 문자)에 딱 걸렸다. 

 

 

다음 글을 통해 캡차 우회를 시도해 본다.