[Python] Selenium을 이용하여 인터넷 사용하기(크롤링, 로그인 등)
❓Selenium이란?
python의 한 모듈로 인터넷을 자유롭게 조작할 수 있도록 만들어진 라이브러리입니다. 이 기능을 이용해서 인터넷 업무를 자동화
하거나, 인터넷의 자료들을 크롤링
하는 등 다양한 방법으로 활용할 수 있습니다.
👨💻 selenium 설치
python이 설치되어 있다고 가정하고 진행하겠습니다.
설치는 간단하게 pip
으로 진행하겠습니다. 아주 간단하죠?
$ pip3 install selenium
🖨️ 크롬 드라이버 다운로드
selenium을 사용하기 위해선 브라우저가 필요합니다. safari, chrome 등 다양한 브라우저를 지원하지만 가장 안정적인 크롬을 사용하겠습니다. 크롬을 사용하기 위해 크롬 드라이버
를 먼저 다운받겠습니다.
크롬 창을 켠 후에 아래 링크를 입력해주세요. 그럼 아래와 같은 페이지가 뜹니다.
chrome://settings/help
여기서 빨간 네모 박스로 쳐진 곳을 확인하여 자신이 설치한 크롬의 버전을 확인합니다.
이후에 아래 링크에 접속하여 자신의 버전에 맞는 드라이버를 다운받아 줍니다.
저의 경우는 크롬 85.0 버전과 mac os를 사용하기 때문에 아래와 같이 클릭하여 다운 받았습니다.
다운받고 압축을 풀면 chromedriver 라는 파일이 있는데, 잘 저장해 두면 됩니다.
✅ 동작 확인
위에서 다운받은 chromedriver의 경로를 아래에 잘 입력해줍니다.
from selenium import webdriver
chrome_driver_dir = <위의 chromedriver를 다운받은 경로>
driver = webdriver.Chrome(chrome_driver_dir)
위의 코드를 실행하면 아래와 같은 크롬의 빈 창이 켜집니다. 위에 Chrome이 자동화된 테스트 소프트웨어에 의해 제어되고 있다고 설명이 뜨네요.
🔥 주요 기능
인터넷 서핑
우선 코드를 통해 네이버에 접속해보겠습니다. driver.get() 함수로 원하는 인터넷 주소를 입력하면 해당 주소로 이동합니다.
driver.get('https://www.naver.com')
스크린샷
아래 코드를 입력하면 현재 켜져 있는 크롬 창의 화면을 캡쳐하여 저장합니다.
driver.get_screenshot_as_file('./sample.png')
버튼 클릭, 입력
현 상태에서 원하는 버튼을 클릭하거나, 입력창에 입력을 할 수 있는데요. 일단 html의 기초 지식이 있다면 좋지만, 없어도 충분히 하실 수 있습니다. 크롬 창을 켜서 마우스 오른쪽 버튼을 클릭하여 검사
버튼을 클릭합니다. 그럼 화면 우측에 창이 뜨게 됩니다.
화면 가운데에 아이콘을 누르고, 입력이나 클릭을 원하는 위치에서 마우스 클릭해줍니다. 그러면 오른쪽 창에서 해당 부분을 가리키는 html로 이동하게 되는데요, 그 부분에서 마우스 오른쪽 버튼
을 클릭하여, Copy
- Copy XPath
를 순차적으로 눌러줍니다.
제가 직접 해보니 입력창의 XPath는
//*[@id="query"]
검색 버튼의 XPath는
//*[@id="search_btn"]
입니다.
이제 네이버에 selenium이라는 키워드로 검색해보겠습니다.
입력을 위해서는 find_element_by_xpath() 함수 안에 위의 XPath주소를 넣어주시고 뒤의 send_keys()
함수 안에는 입력할 값을 넣어줍니다.
클릭의 경우에는 xpath로 찾는 것까지는 똑같고 click()
함수를 이어서 작성해 주면 됩니다.
driver.find_element_by_xpath('//*[@id="query"]').send_keys('selenium')
driver.find_element_by_xpath('//*[@id="search_btn"]').click()
위의 코드를 실행해주면 아래처럼 잘 검색된 화면을 확인할 수 있습니다.
필요한 작업을 모두 수행하셨으면 quit()함수로 driver를 종료합니다.
driver.quit()
전체코드
위의 코드를 다시 한 번 정리해보겠습니다.
from selenium import webdriver
chrome_driver_dir = <위의 chromedriver를 다운받은 경로>
# chrome 실행
driver = webdriver.Chrome(chrome_driver_dir)
# 해당 링크로 접속
driver.get('https://www.naver.com')
# 현재 창에서 스크린샷 찍고 저장
driver.get_screenshot_as_file('./sample.png')
# 입력창에 텍스트 입력
driver.find_element_by_xpath('//*[@id="query"]').send_keys('selenium')
# 특정 버튼 클릭
driver.find_element_by_xpath('//*[@id="search_btn"]').click()
# driver 종료
driver.quit()
위의 함수 정도면 selenium으로 가볍게 필요한 작업은 대부분 하실 수 있습니다. 활용할 수 있는 방법은 무궁무진하니 다양한 곳에 적용해 보세요!