오늘은 파이썬에서 크롤링할때 자주 사용하는
Selenium에 대해 간단하게 알아보겠다
selenium은 웹 어플리케이션에서 자동화를 할때 사용하는 라이브러리이다
간단하게 말하면 자동으로 웹에서 클릭이나 문자 입력등을 할 수 있게 도와준다
예전 싸피 시절 같은반에서 파이썬 잘하는 형이 크롤링 하는걸 봤는데
자동으로 혼자 클릭하고 정보 가져오는걸 보고
컴퓨터에 귀신이 들린거마냥 혼자 움직이길래 너무 신기했는데 그걸 해볼 수 있다 ㅋㅋㅋㅋㅋ
먼저 당연히 설치를 해줘야한다
터미널에서
pip install selenium
을 입력하면 된다
나는 근데 pip3 install을 입력해야 설치가 됐다
GPT에게 물어보니
이렇다고 한다
(webdriver_manager도 설치를 해야하는줄 알았는데
selenium4 부터는 기본적으로 크롬드라이버를 지원해서 꼭 설치는 안해도 되는거 같다)
이제 vscode를 키고 ipynb파일을 하나 만들어 주자
파이썬 파일로 만들어도 되지만
주피터 노트북이 여러가지로 편리한거 같다
코드를 추가해주고 파이썬을 선택해주자
이제 import를 해주자
# selenium의 webdriver를 사용하기 위한 import
from selenium import webdriver
# selenium으로 키를 조작하기 위한 import
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
일단 이렇게 임포트를 해주고
# 크롬드라이버 실행
driver = webdriver.Chrome()
driver.get('https://www.google.com/')
이렇게 입력한 후
실행하면 크롬창이 열리고 구글페이지로 이동하는걸 확인할 수 있다
자 오늘은 정말 간단하게 크롬에서 내 블로그를 검색하고
블로그에 들어가는걸 해보겠다
개발자 도구를 켜서 이제 요소를 찾아야한다
구글 메인페이지에서 검색란을 찾아보니 이렇게 나와있다
요소를 선택할때는 id,class name, xpath등등 아주 다양한 값들로 선택할 수 있다
나의 영원한 친구 GPT에게 물어보니
이러한 방법들을 알려준다
정확도가 높은 xpath를 사용해보자
그리고 그 요소 안에 moooostory라는 값을 입력해보겠따
# 크롬드라이버 실행
driver = webdriver.Chrome()
driver.get('https://www.google.com/')
time.sleep(3)
search_box = driver.find_element(By.XPATH, "//textarea[@id='APjFqb' and @name='q']")
search_box.send_keys('moooostory')
참고로 time.sleep은 페이지 로딩을 기다리는데 사용하려고 넣어줬다
자 이제 실행을 해보면
여기까지 실행이 된다
엔터키까지 눌러보겠따
driver = webdriver.Chrome()
driver.get('https://www.google.com/')
time.sleep(3)
search_box = driver.find_element(By.XPATH, "//textarea[@id='APjFqb' and @name='q']")
search_box.send_keys('moooostory')
search_box.send_keys(Keys.ENTER)
이렇게 잘 검색이 되는걸 볼 수 있다
혼자서 검색하는게 참 신기하지 않은가 ㅎㅎㅎ
첨에 selenium을 사용하면서 혼자 움직이고 하는게
마치 해커가 된거같기도하고 참 재밌게 배웠따
이제 저걸 클릭하게 만들건데
여러가지 방법이 있겠지만 일단 또 개발자 도구 켜서 저 항목을 열심히 찾아보자
검색결과 순서가 바뀔수도 있고
여러 변수들이 있을 수 있기때문에
그러한 변수가 없게 아얘 네 블로그 주소가 포함된 테그를 찾아서 클릭하게 해보겠다
# selenium의 webdriver를 사용하기 위한 import
from selenium import webdriver
# selenium으로 키를 조작하기 위한 import
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
# 페이지 로딩을 기다리는데에 사용할 time 모듈 import
import time
# 크롬드라이버 실행
driver = webdriver.Chrome()
driver.get('https://www.google.com/')
time.sleep(3)
search_box = driver.find_element(By.XPATH, "//textarea[@id='APjFqb' and @name='q']")
search_box.send_keys('moooostory')
search_box.send_keys(Keys.ENTER)
time.sleep(2)
# href 속성에 특정 URL이 포함된 <a> 태그 선택
target_url = "https://moooostory.tistory.com/"
a_tag = driver.find_element(By.XPATH, f'//a[contains(@href, "{target_url}")]')
a_tag.click()
자 이렇게 전체 코드가 완성 되었다
실행을 시켜보면 내 블로그를 검색해서 잘 들어가는걸 확인할 수 있다
정말 신기하고 재밌지 않은가??
요소 찾고 입력,클릭만 할 줄 알아도 여러가지 페이지에서 재밌게 놀 수 있다
그리고 requests등을 이용하면 api요청도 하고 다양한 일을 할 수 있다
싸이월드 시절 이걸 알았다면 반복문으로 투데이 조작을 할 수 있었을 지도? ㅋㅋㅋㅋㅋ
오늘은 selenium을 시작하고 아주 간단한 사용법을 알아보았다
부디 도움이 됐길 바라며
혹시나 질문이 있다면 댓글에 남겨주길 바란다!