관리자 글쓰기
[Python] Selenium 정리
2021. 10. 13. 22:09 - 프론트맨

파이썬으로 웹 크롤링, 웹 스크래핑을 할 때는

먼저 타겟 url로 접속을 해야 합니다.

이때는 보통 2가지 방법이 주로 쓰이는데

 

바로 RequestsSelenium입니다.

 

Requests는 백그라운드에서 실행되어서 빠르다는 장점이 있지만

정적인 방식이기 때문에 정보를 가져오는 것 밖에 할 수 없다는 단점이 있습니다.

 

Selenium은 직접 창을 열면서 실행되기 때문에 Request에 비해서 느리긴 하지만

동적인 방식이기 때문에 스크롤을 내리거나 검색어를 입력하는 등의 작업이 가능합니다.

 

↓ Requests 정리

 

[Python] 파이썬 웹 스크래핑 완벽 정리(주식 시가 가져오기)

오늘은 파이썬을 이용한 웹 스크래핑에 대해 알아보겠습니다 웹 페이지를 가져와서 데이터를 추출해 내는 행위를 웹 크롤링(crawling) 혹은 웹 스크래핑(scraping)이라고 합니다. 웹 스크래핑을 하

squidcoding.tistory.com

 

오늘은 Selenium에 대해 살펴보겠습니다.

 

우선 터미널에 아래의 코드를 입력해서 Selenium을 설치합니다.

 

pip install selenium

 

그리고 Selenium으로 크롬 브라우저를 실행하기 위해서 Chrome Driver를 따로 다운 받아야 합니다.

 

주소창에 chrome://version 이라고 치면 크롬 브라우저의 버전을 확일할 수 있습니다.

 

 

그리고 자신의 브라우저 버전의 ChromeDriver를 다운로드하면 됩니다.

https://chromedriver.chromium.org/downloads

 

ChromeDriver - WebDriver for Chrome - Downloads

Current Releases If you are using Chrome version 95, please download ChromeDriver 95.0.4638.17 If you are using Chrome version 94, please download ChromeDriver 94.0.4606.61 If you are using Chrome version 93, please download ChromeDriver 93.0.4577.63 For o

chromedriver.chromium.org

 

이제 코드를 칩니다.

from selenium import webdriver

browser = webdriver.Chrome("C:/Users/chromedriver.exe")
browser.get("http://naver.com")

webdriver.Chrome( )에는 chromedriver.exe 파일의 경로를 적으면 됩니다. (같은 위치에 있으면 비워놔도 됨)

그리고 browser.get 메서드로 이동할 페이지의 주소를 입력합니다.

 

 

여기까지는 Requests와 비슷합니다.

이제부터 Selenium의 동적인 기능에 대해 알아봅시다.

 

네이버에서 '오징어 게임'을 검색하는 예제입니다.

개발자 모드에서 열어보면 검색창은 input 태그에 'query'라는 id를 갖고 있습니다.

 

from selenium import webdriver

browser = webdriver.Chrome("C:\\Users\\LG\\Desktop\\Python Workspace\\chromedriver.exe") 

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

elem = browser.find_element_by_id('query')
elem.send_keys('오징어게임')

browser.find_element_by_id 메서드를 사용해서 elem 변수에 저장하고

elem.send_keys로 검색어를 입력할 수 있습니다.

 

element를 가져오는 방법은 id 외에도

class, xpath, tag_name, css_selector 등 다양합니다.

 

만약에 elem 변수를 한번 사용하고 말 것이면 

굳이 변수에 저장하지 않아도 됩니다.

 

 

이제 검색 버튼을 클릭합니다.

아래를 보면 button 태그에 search_btn의 id를 갖고 있는 것을 볼 수 있습니다.

 

 

이 버튼을 클릭하는 방법입니다.

 

from selenium import webdriver

browser = webdriver.Chrome("C:\\Users\\LG\\Desktop\\Python Workspace\\chromedriver.exe") 

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

elem = browser.find_element_by_id('query')
elem.send_keys('오징어게임')

browser.find_element_by_id('search_btn').click() # 검색 버튼 클릭

 

이번엔 변수에 저장하지 않는 방법을 사용했습니다.

click() 메서드로 쉽게 버튼을 클릭할 수 있습니다.

 

 

여기까지 Selenium으로 네이버에서 키워드를 검색해보는 예제였습니다.

Selenium으로 웹 페이지를 이동해서 웹 스크래핑을 하려면

그 페이지의 소스를 Beautifulsoup에 넘겨주어야 합니다.

 

from selenium import webdriver
from bs4 import BeautifulSoup

browser = webdriver.Chrome("C:\\Users\\LG\\Desktop\\Python Workspace\\chromedriver.exe") 

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

elem = browser.find_element_by_id('query')
elem.send_keys('오징어게임')

browser.find_element_by_id('search_btn').click()

res = browser.page_source # 현재 페이지의 소스를 변수에 저장
soup = BeautifulSoup(res, "lxml") # BeautifulSoup 에 소스를 전달

browser.page_source 메서드로 현재 페이지의 소스를 가져올 수 있습니다.

 

마지막으로 작업이 끝난 후 창을 닫는 메서드입니다.

 

browser.close()

browser.close() → 현재 탭만 종료시킵니다.

 

browser.quit()

browser.quit() → 전체 브라우저를 종료시킵니다.

 

 

 

 

오늘은 Selenium에 대해 간단히 정리해 보았습니다.

끝까지 읽어주셔서 감사합니다.