앞서 배운 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")
- 셀레니움 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()
'활용3. 웹스크래핑(0825-0829) > selenium' 카테고리의 다른 글
웹스크래핑3 셀레니움 2 구글무비 (0) | 2022.08.29 |
---|---|
웹스크래핑3 셀레니움 1 네이버 항공권 WebDriverWait(browser, 30).until(EC.presence_of_element_located((By.XPATH, xpath_str))) (0) | 2022.08.29 |
웹스크래핑3 셀레니움 기초: 네이버 로그인 send_keys("키") (0) | 2022.08.29 |
스크래핑 iframe 처리 (네이버 홈: 우측 쇼핑몰) selenium (0) | 2022.08.29 |
댓글