Selenium + ChromeDriver 조합 자체도 느려서 웹 사이트 뜯어가면서 requests 보고있는 판국에
굳이 인터넷 익스플로러 쓰겠다고 Selenium + IEDriver을 쓰는 분들이 얼마나 많을까 싶지만
지금 제가 아버지 업무자동화를 위해 만들고 있는 사이트가 구닥다리라 Active X + 보안 유틸리티 떡칠이라는 끔직한 조합 덕에 어쩔수 없이 IEDriver을 쓰고 있습니다.
IEDriver을 쓰면서 조금의 팁을 작성합니다.
1. IEDriver이 아예 작동하지 않을때
https://pgh268400.tistory.com/123
골때리지만 IEDriver은 아예 작동하지 않는것부터 시작할때가 있습니다.
시작이 안되는것이지요.. 보호 모드와 연관이 있는데 위 본문 내용을 참고해서 해결해주세요.
제목은 C#이지만 어떤 언어든 상관없습니다.
2. IEDriver에서 입력(send_keys)이 느릴때
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium import webdriver
URL = 'https://www.google.co.uk/'
path = "C:\iedriver.exe"
cap = DesiredCapabilities.INTERNETEXPLORER
cap['INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS'] = True
cap['requireWindowFocus'] = True
cap['nativeEvents'] = False
driver = webdriver.Ie(capabilities=cap, executable_path=path)
저도 겪어보지 않아서는 잘 모르겠습니다만 IEDriver에서 키 입력하는게 굉장히 느릴때가 있다고 합니다.
capabilities를 옵션으로 추가해주면 되는데 Python + Selenium + IEDriver 조합으로 쓰는 분들이 커뮤니티에서 잘 찾을 수가 없어서 관련 코드를 찾는데 애 먹었습니다.
간단히 말하자면 위처럼 driver을 만들때 위처럼 옵션을 주시고 하시면 됩니다.
그리고 64비트가 아니라 32비트 iedriver을 받으셔야 합니다.
3. Element(요소) 파싱하는게 느릴때
driver.find_element_by_css_selector("#search")
다음과 같이 find_element... 메서드를 이용해 가져오면 드라이버가 제어중일때 보이는 element를 바로 가져올 수 있지만 이게 드라이버가 직접 찾아서 응답해야 하는것이기 때문에
느려 터진 ie에선 노답스러운 속도를 보여줍니다.
그래서 파싱을 할때는 아래처럼 페이지 소스를 통째로 가져온 뒤에 bs4 로 파싱하는게 훨씬 빠릅니다.
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
deposit = soup.select("#search")
그리고 클릭의 경우에도 자바스크립트를 바로 execute 시키는게 더 빠를거 같긴 합니다만, 이것은 시도해보시길 바랍니다.
'프로그래밍 > Python' 카테고리의 다른 글
[Python] PyQt5 학습 정보, 쓰레드 작업 등 정보 모음 (0) | 2022.01.14 |
---|---|
시놀로지 NAS + JupyterLab 원격 IDE 환경 (0) | 2022.01.04 |
[Python] 디시인사이드 글 검색 크롤링 / 파싱 (2) | 2021.10.30 |
비트코인 픽 사이트와 연동해서 텔레그램 알림을 주는 프로그램을 개발했습니다 (0) | 2021.10.11 |
[Python] smi 자막 특정 위치부터 싱크 조절하기 (0) | 2021.09.22 |