셀레니움, WebDriverWait 및 에러 처리, 드라이버 옵션 예제
글. 수알치 오상문
네이버 또는 다음에 접속하고 WebDriverWait를 이용하여 footer id가 확인될 때까지 기다립니다.
# 불필요한 모듈도 있지만 자주 쓰는 것이라 포함 시킴
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
from webdriver_manager.chrome import ChromeDriverManager
import time
# ---------------------------------------------------
options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-logging']) # device error 메시지 off
#options = options.add_argument('--headless')
#PATH = '/myproject/webdriver/chromedriver.exe'
#driver = webdriver.Chrome(PATH, options=options)
driver = webdriver.Chrome(options=options) # 현재 위치에 있는 크롬드라이버 등록
driver.implicitly_wait(20) # 정상 페이지 로딩 최대 허용 시간
driver.set_window_size(1920, 1600) # 브라우저 창 크기
driver.set_window_position(1, 1) # 브라우저 화면 위치
driver.set_page_load_timeout(20) # 페이지 로딩 타임아웃 시간 20초
# ----------------------------------------------------
urls = {'naver': 'https://naver.com',
'daum': 'https://daum.net', }
footerID = {'naver': 'footer',
'daum': 'daumFoot',}
target = 'daum'
start = time.time()
try:
driver.get(urls[target])
try:
WebDriverWait(driver, 20).until(
lambda driver: driver.find_element(By.ID, footerID[target]))
print('OK!, found:', target.upper(), 'footer')
except Exception as e:
print('get error:', e)
raise Exception('"%s"(id) not found' %footerID[target])
except Exception as e:
print('get error:', e)
driver.quit()
exit(1)
if target not in driver.current_url:
print(target.upper(), 'page not found!')
else:
print('driver.current_url:', driver.current_url)
print('driver.title:', driver.title)
print('Lap time: %.2f초' %(time.time() - start))
input('Quit? ')
driver.quit()
[실행 결과] 네이버(NAVER)
OK!, found: NAVER footer
driver.current_url: https://www.naver.com/
driver.title: NAVER
Lap time: 4.77초
Quit?
[실행 결과] 다음(DAUM)
OK!, found: DAUM footer
driver.current_url: https://www.daum.net/
driver.title: Daum
Lap time: 5.34초
Quit?
'웹 크롤링, 스크래핑' 카테고리의 다른 글
파이썬, 셀레니움에서 버튼이나 엘리먼트 접근 못하는 경우, iframe (0) | 2022.07.16 |
---|---|
파이썬, 셀레니움 쿠키 제어 예제 (0) | 2022.07.16 |
셀레니움 User-Agent (0) | 2022.07.16 |
Running as root without --no-sandbox is not supported. 에러 (0) | 2022.07.16 |
파이썬, 셀레니움 페이지 또는 특정 조건까지 기다리기 (0) | 2022.07.14 |