활용3. 웹스크래핑(0825-0829)/selenium

★스크래핑 3-1 : 셀레니움 기초 실습 (ver. 4.2 이하) DeprecationWarning: executable_path has been deprecated, please pass in a Service object 오류 해결

나도초딩 2022. 8. 28.

앞서 배운 beautifulsoup 으로만 안되는 사이트들이 있어서, (브라우저로 접속해서 로그인이나 클릭 등이 필요한 사이트들) 셀레니움을 학습

 

무작정 따라하다 발생하는 대표적 오류 (셀레니움 버전 문제)

DeprecationWarning: executable_path has been deprecated, please pass in a Service object 오류 해결

pip install selenium==4.2.0

pip install selenium==4.2.0

 

Selenium  4.x : OS 별  Broswer 버전을 자동 감지하여  Web Driver 설치를 자동으로 할 수 있습니다.Selenium 4.0부터는 OS와 Web Broswer에 맞는 Web Driver를 자동으로 다운로드하고 로딩이 가능합니다.

pip3 install  selenium webdriver_manager

삽질(4.2 쓰던가. 4.3부터는 달라진 사용법)

find_element_by_class_name

# 셀레니움 4.3 이후~
from selenium import webdriver
from selenium.webdriver.common.by import By

find_element(By.XPATH, "xpath_str")
  1. 셀레니움 4.2.0 버전으로 실습 진행해야함
    (4.3 부터는 find_element_by_class_name 안먹음--> find_element(By.***, "" )
    pip install selenium==4.2.0
    다른 버전 설치돼있다면, pip uninstall selenium 후, 4.2 이하 설치.
    or
    find_element(By.**, "") 으로 실습 진행
# pip install selenium==4.2.0
# 크롬웹드라이버 설치

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

## 네이버 검색창 키워드 입력
browser = webdriver.Chrome() # "./chromedriver.exe"
elem = browser.find_element_by_id("query")
elem.click()
elem.send_keys("나도코딩")
elem.send_keys(Keys.ENTER)

## 태그로 찾기
elem = browser.find_element_by_tag_name(“a”)
elem = browser.find_elements_by_tag_name(“a”)
for e in elem:
    e.get_attribute(“href”) # bs 에서는 [“href”]

# 다음 검색창
browser.get(“http://daum.net”)
# input 태그 네임 찾아서 입력
elem = browser.find_element_by_name(“q”)
elem.send_keys(“나도코딩”)
elem.send_keys(Keys.ENTER)
browser.back()
elem.send_keys(“나도코딩”)

# 다음 XPATH 로 클릭(도구에서 검색아이콘 xpath 복사 )
# “daumSearch” 탈출문자 처리 or ‘’ 로 변경 
elem = browser.find_element_by_xpath(“//*[@id=’daumSearch’]/fieldset/div/div/button[2]”)
elem.click()

 

댓글