!pip install selenium
위처럼 pip install 명령어를 통해 어떤 모듈을 설치할 때 느낌표(!)를 붙이면 ! 이후에 나오는 내용들을 커맨드창에서 입력하는 것과 동일하게 처리해주라는 명령어라고 한다.
import matplotlib.pyplot as plt
import platform
import seaborn as sns
from matplotlib import font_manager, rc
# %matplotlib inline
get_ipython().run_line_magic('matplotlib', 'inline')
path = 'C:/Windows/Fonts/malgun.ttf'
if platform.system() == 'Darwin':
rc('font', family='Arial Unicode MS')
elif platform.system() == 'Windows':
font_name = font_manager.FontProperties(fname=path).get_name()
rc('font', family=font_name)
else:
print('Unknown system. sorry')
크롬 드라이버 최신 버전의 경로를 입력하고 아래 코드를 수행할 시,
driver = webdriver.Chrome('../driver/chromedriver.exe')
driver.get('https://www.naver.com')
위와 같이 DeprecationWarning이 출력된다. 이를 해결하기 위해 구글링해본 결과,
아래처럼 !pip install webdriver-manager를 통해 webdriver-manager 패키지를 설치한 후, Service 객체에 webdriver-manager의 ChromeDriverManager를 이용하여 현재 크롬 버전 드라이버 경로가 아닌 현재 OS내 설치된 크롬 브라우저를 사용하도록 수정하면 Warning 없이 실행되는 것을 확인할 수 있다.
!pip install webdriver-manager
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
chrome_options = webdriver.ChromeOptions()
# driver = webdriver.Chrome('../driver/chromedriver.exe') # Warning 때문에 사용 X
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)
driver.find_element_by_xpath('//*[@id="content"]/div[3]/div/h2')
코드를 실행하니 아래와 같은 오류가 뜬다.
원인을 찾아보니 최신 버전의 셀레니움에서는
from selenium.webdriver.common.by import By
driver.find_element(By.XPATH, '//*[@id="content"]/div[3]/div/ul/li[1]/a/span[2]')
위의 코드처럼 selenium.webdriver.common.by 에서 By 모듈을 import해준 뒤,
find_element_by_xpath 대신 find_element(By.XPATH, 'xpath 붙혀넣기')로 작성을 해줘야 오류 없이 작동하는 것을 확인했다.
xpath 뿐만 아니라 class, id 등 다른 경우들도 아래처럼(캡처 출처: https://goodthings4me.tistory.com/567) 작성해야 한다!