Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python)에서 정규 표현식으로 URL 검증하는 방법

URL 검증은 생각보다 까다로운 작업입니다. 그 이유는 거의 모든 문자열이 유효한 URL이 될 수 있기 때문입니다. URL을 구분하는 몇 가지 문장부호 규칙이 존재하지만, 문장부호가 하나도 없더라도 여전히 유효한 URL로 간주됩니다. 따라서 'validate' 같은 단순한 검증 메서드가 존재하지 않으며, 상황에 맞는 적절한 방법을 선택하는 것이 중요합니다.

상황별 URL 검증 방법

  • 데이터를 신뢰하면서 프로토콜이 HTTP인지만 확인하고 싶은 경우urlparse를 사용하는 것이 가장 간단하고 확실한 방법입니다.

  • 문자열이 실제 URL 형식에 부합하는지 확인하고 싶은 경우 — 다소 복잡하고 장황하지만 정규 표현식(regex)을 사용해야 합니다.

  • 실제로 접근 가능한 웹 주소인지 확인하고 싶은 경우 — 아래 코드처럼 직접 요청을 시도해 결과를 확인하는 것이 가장 좋습니다.

실제 웹 주소인지 확인하는 예제

import urllib.request

try:
    urllib.request.urlopen(url)
except IOError:
    print("유효하지 않은 URL입니다.")

위 코드는 해당 URL에 실제로 접속을 시도하여, 연결에 실패하면 IOError 예외를 발생시키는 방식으로 동작합니다. 즉, 형식뿐만 아니라 실제 존재하는 웹 주소인지까지 검증할 수 있습니다.

참고: urlparse를 활용한 간단한 형식 검증

정규 표현식 없이 URL의 기본 구조(스킴과 호스트명)만 빠르게 확인하고 싶다면 urllib.parse 모듈을 활용할 수 있습니다.

from urllib.parse import urlparse

def is_valid_url(url):
    parsed = urlparse(url)
    return bool(parsed.scheme in ('http', 'https') and parsed.netloc)

정리하면, 완벽한 URL 검증은 단일 방법으로 해결되지 않습니다. 데이터의 신뢰도와 검증 목적에 따라 urlparse, 정규 표현식, 실제 요청 테스트 중 적합한 방법을 조합해 사용하는 것이 바람직합니다.