728x90
반응형
셀레니움을 이용하여 웹 크롤러를 만들 때 예상치 못한 팝업창이 떠서 작동이 안되는 경우가 발생할 수 있다.
이 때 사용할 수 있는 코드를 포스팅 하겠다.
(프로젝트에서 개발중인 사이트에서는 팝업창이 떠서 다른 곳도 많겠지 생각했는데, 포스팅하려고 팝업창 뜨는 사이트를 찾으려고 하니 의외로 팝업창 뜨는 사이트를 찾기가 쉽지가 않다..)
이전 발행글
2021.08.25 - [project/Expert] - [python] selenium 설치하기 및 예제
1. 이전에 포스팅 했던, 예제 코드에서 url 을 국민건강보험 주소로 수정하였다.
from selenium import webdriver
import time
path = "크롬드라이버 설치 경로"
url = "https://www.nhis.or.kr"
driver = webdriver.Chrome(path)
driver.get(url)
time.sleep(3)
2. window_handles 메소드를 통해 셀레니움을 통해 켜진 창의 개수를 알 수 있다.
tabs = driver.window_handles
print(tabs)
출력 결과는 아래와 같다. 예상하듯이, 리스트 첫 번째 있는 것이 메인 창이 될 것이고, 리스트 두 번째가 팝업창이다.
['CDwindow-400BB2BFEDFDCDE14574AAD5FDD253C8', 'CDwindow-EAC9872391A8781D2EB47FC074B34168']
반응형
3. 만약 팝업창이 한개만 뜨는 경우라면 tabs[1] 으로 화면 이동 후 driver.close()를 해주면 된다.
driver.switch_to_window(tabs[1])
driver.close()
4. 만약 여러개의 팝업창이 뜨는 경우라면 반복문을 통해 위의 경우를 반복하면 된다.
while len(tabs) != 1:
driver.switch_to_window(tabs[1])
driver.close()
팝업창을 닫은 이후 크롤링을 하기 위한 로직이 수행되기 위해서는 원래의 화면으로 이동이 필요하다.
driver.switch_to_window(tabs[0])
다음 포스팅에서는 로그인 하는 방법에 대해서 포스팅 하겠다.
728x90
반응형
'project > Expert' 카테고리의 다른 글
[MongoDB] BulkWriteError:duplicate Key Error (E11000) 문제해결 (0) | 2022.03.23 |
---|---|
[python] selenium으로 자동 로그인 하기 (0) | 2021.09.01 |
[python] selenium 설치하기 및 예제 (0) | 2021.08.25 |
[MongoDB] dump하고 backup 하기 - ③ (0) | 2021.04.23 |
[MongoDB] dump하고 backup 하기 - ②(오류 대잔치) (0) | 2021.04.22 |