Python urlsplit은 됐는데 port에서 오류가 날 때: 잘못된 포트를 목록에서 따로 남기기

99999 포트가 포함된 예시 주소와 경고 표시를 보여 주는 노트북, URL 포트 오류 분리는 됐는데 port 읽기 확인 제목의 개념 삽화

Python에서 urlsplit 결과가 만들어졌어도 port 속성을 읽을 때 ValueError가 날 수 있습니다. 잘못된 포트 번호를 가진 링크를 “분리 성공”으로만 기록하지 말고, 원본 주소와 어느 단계에서 실패했는지 남기세요.

1. 결과 객체와 속성 읽기를 구분

Python 3.12 문서는 유효하지 않은 포트가 지정된 경우 port 속성을 읽으면 ValueError가 발생한다고 설명합니다. 범위 밖 포트의 오류 동작은 Python 3.6부터의 변경 사항으로 명시되어 있습니다. 포트가 없는 경우의 None과 잘못된 포트의 오류를 같은 빈칸으로 묶지 마세요.

공식 문서가 경고하듯 urlsplit은 전체 URL의 유효성 검증을 수행하는 함수가 아닙니다. 속성을 읽을 수 있었다는 사실 역시 실제 웹페이지 연결이나 안전성을 확인했다는 뜻이 아닙니다.

2. 네 가지 입력을 비교하는 예제

원본 보존: 수정하지 않은 입력 주소를 남기기 / 구성 분리: urlsplit 결과와 오류 여부 기록 / port 읽기: 없음·숫자·ValueError를 구분 / 추가 확인: 연결 성공·안전한 링크로 단정하지 않기

예시 주소의 부분port 읽기 결과
example.com:443443
example.com (포트 없음)None
example.com:99999ValueError
example.com:abcValueError
from urllib.parse import urlsplit

raw = "https://example.com:99999/article"
try:
    parts = urlsplit(raw)
    port = parts.port
except ValueError:
    result = {"raw": raw, "status": "parse_or_port_error"}
else:
    result = {"raw": raw, "port": port, "status": "port_read"}

이 코드는 해당 입력의 분리 또는 포트 읽기 오류를 잡는 최소 예제입니다. 네트워크에 접속하지 않으며, 개인정보가 들어 있는 실제 주소를 출력하는 예제로 바꾸지 마세요. 표의 주소는 설명을 위한 예시입니다.

3. 원본과 오류를 같은 행에 남기기

링크 목록을 만들 때 오류가 난 행을 통째로 지우면 어떤 글의 어느 링크를 확인해야 할지 찾기 어렵습니다. 원본 주소, 발견한 글, 오류 단계와 수동 확인 필요 여부를 함께 보존하는 방법이 유용합니다.

분리와 port 접근을 더 세밀하게 구분해야 하는 작업이라면 두 부분을 별도 try 문으로 나누어 기록할 수 있습니다. 위의 짧은 예제는 둘을 한 오류 상태로 모으므로, 그것을 세부 원인 진단기라고 설명하지 않습니다.

자동으로 99999를 443으로 고쳐 저장하는 식의 추측은 피하세요. 링크 작성 의도를 확인하지 않은 수정은 잘못된 주소를 다른 주소로 바꾸는 결과가 될 수 있습니다. 원본과 수정안을 따로 두고 공개된 목적지를 확인하세요.

Python 3.12 port 속성과 ValueError 공식 설명

4. 자주 묻는 질문

포트가 없으면 잘못된 URL인가요?

이 문서의 결과 객체에서 포트가 없으면 port는 None입니다. 그것만으로 주소 전체의 유효성을 판정하지 않습니다.

오류 없이 읽었으면 접속도 성공한 건가요?

아닙니다. 이 예제는 네트워크 요청을 하지 않습니다. 공개 목적지 연결과 내용 확인은 별도 작업입니다.

공식 자료 확인일 2026.10.14: Python 3.12 공식 문서, urllib.parse.

대표 이미지는 AI로 제작한 개념 삽화이며 실제 제품·현장 사진이 아닙니다. 본문 설명 도표는 직접 구성했습니다.

이 블로그의 인기 게시물

디노 블로그 링크 추출기

디노 글자수 계산기

URL에 앰퍼샌드 표기가 남을 때: HTML 원문과 추출한 href를 구분하세요