셀레니움 urllib3.exceptions.MaxRetryError 에러 해결Cases

2025. 3. 6. 17:41IT&모바일&컴퓨터

Selenium을 사용하면서 urllib3.exceptions.MaxRetryError 오류를 겪을 수 있습니다. 이 오류는 다양한 원인으로 발생하며, 각 원인에 따른 해결 방법이 필요합니다. 아래에 주요 원인과 그에 따른 해결 방법을 정리하였습니다.

 

에러로그

1. 웹 드라이버와의 연결 문제

  • 원인: 웹 드라이버(예: ChromeDriver, GeckoDriver)와의 연결이 실패하여 발생합니다. 이는 드라이버가 비정상적으로 종료되었거나, 드라이버와 브라우저 버전의 불일치로 인해 발생할 수 있습니다.
  • 해결 방법:
    • 웹 드라이버와 브라우저의 버전이 호환되는지 확인하고, 필요 시 업데이트합니다.
    • 코드 실행 후 driver.quit()을 호출하여 드라이버를 올바르게 종료합니다.
    • 웹 드라이버를 재시작하여 연결을 재설정합니다.
  • 예1 : 웹에서 윈도우(창)를 스스로 닫았는데, 프로그램이 인지 하지 않고 이미 닫힌 window에 접근하려고 할때

2. 서버의 요청 제한

  • 원인: 짧은 시간 내에 과도한 요청을 보내 서버가 클라이언트의 IP를 차단하거나 제한하는 경우 발생합니다.
  • 해결 방법:
    • 요청 사이에 적절한 지연 시간을 추가하여 서버에 부담을 줄입니다.
    • 프록시나 VPN을 사용하여 IP를 변경하거나, IP 로테이션 기법을 활용합니다.
    • 헤더에 User-Agent를 설정하여 요청을 보냅니다.

3. 포트 충돌 또는 사용 중지

  • 원인: 웹 드라이버가 사용하는 포트가 다른 프로세스에 의해 이미 사용 중이거나, 방화벽 설정으로 인해 포트 접근이 제한된 경우 발생합니다.
  • 해결 방법:
    • 다른 프로세스에서 해당 포트를 사용 중인지 확인하고, 필요 시 해당 프로세스를 종료합니다.
    • 방화벽 설정을 확인하여 필요한 포트가 열려 있는지 확인합니다.
    • 웹 드라이버가 다른 포트를 사용하도록 설정을 변경합니다.

4. 네트워크 연결 문제

  • 원인: 인터넷 연결 불안정, 프록시 설정 오류, DNS 문제 등으로 인해 발생할 수 있습니다.
  • 해결 방법:
    • 인터넷 연결 상태를 확인하고, 필요 시 네트워크를 재설정합니다.
    • 프록시 설정을 확인하고 올바르게 구성되어 있는지 확인합니다.
    • DNS 설정을 확인하고, 필요 시 기본값으로 재설정합니다.

5. 비동기 처리와의 충돌

  • 원인: Selenium은 기본적으로 동기적으로 작동하지만, 비동기 처리(asyncio)와 함께 사용할 경우 충돌이 발생할 수 있습니다.
  • 해결 방법:
    • Selenium을 비동기 환경에서 사용할 때는 asyncio와의 호환성을 고려하여 코드를 작성합니다.
    • 비동기 처리를 지원하는 Selenium 래퍼 라이브러리를 활용합니다.

6. 잘못된 URL 형식

  • 원인: 잘못된 형식의 URL을 사용하여 드라이버가 페이지에 접근할 수 없을 때 발생합니다.
  • 해결 방법:
    • URL의 형식이 올바른지 확인하고, 잘못된 부분을 수정합니다.

위의 다양한 원인과 해결 방법을 참고하여 urllib3.exceptions.MaxRetryError 오류를 효과적으로 해결할 수 있습니다. 문제가 지속될 경우, 추가적인 로그나 오류 메시지를 확인하여 근본 원인을 파악하는 것이 중요합니다.