Selenium으로 화면 캡처 오류 수정

URL이 초과된 최대 재시도 횟수

NewConnectionError로 인해 발생


아래와 같이 스크린샷을 캡처하기 위해 Python 코드를 작성할 때 수정할 수 없는 오류가 발생했습니다.

이 문제를 해결하기 위해 이틀을 보냈습니다.

문제가 된 코드

driver = webdriver.Chrome(service=service, options=options)
#계속 이걸 밖에 작성해둔 상태였음

if req.status_code == 200:
    html = req.text
    soup = BeautifulSoup(html, "html.parser")

    url_arr = ()
    url_list = soup.select(".benefitBanner")
    for i in url_list:
        card_url = i.select_one("a")
        if not card_url:
            continue
        url_arr.append(card_url('href'))     
    print(url_arr)

num=1
for i in url_arr:
    try:        
        driver.get(f"{i}")  
        # 스크린샷 전에 시간 두기(로딩이 느릴수도 있으니)
        time.sleep(3)
        width = driver.execute_script("return document.body.scrollWidth") # Maximum width as mouse scrolling 
        driver.set_window_size(width, 4000) # Size         
        driver.save_screenshot(f"img_interPark/{num}_promo.png")
        # 종료 (모든 탭 종료)
        driver.quit()
        print("### capture complete")
        num = num + 1 
    except Exception as e:
        print('### error msg :: ', e)        
        driver.quit()

코드 해결

Chrome은 for 문에서 driver.quit()으로 종료되어야 합니다.

따라서 루프는 한 번 실행되지만 다음에 동일한 오류가 나타납니다.

if req.status_code == 200:
    html = req.text
    soup = BeautifulSoup(html, "html.parser")

    url_arr = ()
    url_list = soup.select(".benefitBanner")
    for i in url_list:
        card_url = i.select_one("a")
        if not card_url:
            continue
        url_arr.append(card_url('href'))     
    print(url_arr)

num=1

#문제의 스크린샷 캡처를 위한 코드

for i in url_arr:
    try:
        driver = webdriver.Chrome(service=service, options=options)
        driver.get(f"{i}")  
        # 스크린샷 전에 시간 두기(로딩이 느릴수도 있으니)
        time.sleep(3)
        width = driver.execute_script("return document.body.scrollWidth") # Maximum width as mouse scrolling 
        driver.set_window_size(width, 4000) # Size         
        driver.save_screenshot(f"img_interPark/{num}_promo.png")
        # 종료 (모든 탭 종료)
        driver.quit()
        print("### capture complete")
        num = num + 1 
    except Exception as e:
        print('### error msg :: ', e)        
        driver.quit()

https://coinpipe.142

나는 이 사람의 글을 읽고 구원받았다.

해결책은 webdriver.Chrome을 반복하여 다시 읽는 것입니다.