urlparse
는 Python의 urllib.parse
모듈에서 제공하는 URL 파싱 도구입니다.
이 함수는 URL 문자열을 의미 있는 컴포넌트로 분해하여 분석할 수 있게 해줍니다.
from urllib.parse import urlparse
# 기본 사용 예시
url = "<https://user:pass@example.com:8080/path/to/page?query=value#fragment>"
parsed = urlparse(url)
urlparse
는 ParseResult
객체를 반환합니다. 이 객체는 네임드 튜플(named tuple)의 형태로, 다음과 같은 6개의 컴포넌트를 가집니다:
ParseResult(
scheme='https', # URL 스키마 (프로토콜)
netloc='example.com',# 네트워크 위치
path='/path/name', # 경로
params='', # 매개변수
query='', # 쿼리 문자열
fragment='' # 프래그먼트
)
url = "<https://www.example.com/path/to/resource?name=value#section>"
parsed = urlparse(url)
print(f"scheme : {parsed.scheme}") # https
print(f"netloc : {parsed.netloc}") # www.example.com
print(f"path : {parsed.path}") # /path/to/resource
print(f"params : {parsed.params}") #
print(f"query : {parsed.query}") # name=value
print(f"fragment: {parsed.fragment}") # section
url = "s3://my-bucket/uploads/files/"
parsed = urlparse(url)
print(f"scheme : {parsed.scheme}") # s3
print(f"netloc : {parsed.netloc}") # my-bucket
print(f"path : {parsed.path}") # /uploads/files/
url = "<ftp://user:password@ftp.example.com/files/>"
parsed = urlparse(url)
print(f"scheme : {parsed.scheme}") # ftp
print(f"netloc : {parsed.netloc}") # <user:password@ftp.example.com>
print(f"path : {parsed.path}") # /files/
# 경로에서 앞뒤 슬래시 제거
clean_path = parsed.path.strip('/')
print(clean_path) # 'uploads/files'
# 경로 구성요소 분리
path_components = parsed.path.split('/')
print(path_components) # ['', 'uploads', 'files', '']
url = "<https://user:pass@example.com:8080>"
parsed = urlparse(url)
print(f"username: {parsed.username}") # user
print(f"password: {parsed.password}") # pass
print(f"hostname: {parsed.hostname}") # example.com
print(f"port : {parsed.port}") # 8080
from urllib.parse import urlparse
from datetime import datetime
import uuid
def create_s3_path(s3_base_url, filename):
"""S3 업로드 경로 생성 함수"""
parsed = urlparse(s3_base_url)
# 버킷과 기본 경로 추출
bucket_name = parsed.netloc
base_path = parsed.path.strip('/')
# UUID를 사용한 고유 파일명 생성
file_extension = filename.split('.')[-1]
unique_filename = f"{uuid.uuid4()}.{file_extension}"
# 날짜 기반 경로 생성
date_path = datetime.now().strftime('%Y/%m/%d')
# 최종 S3 키 생성
s3_key = f"{base_path}/{date_path}/{unique_filename}"
return {
'bucket': bucket_name,
's3_key': s3_key,
'full_path': f"s3://{bucket_name}/{s3_key}"
}
# 사용 예시
result = create_s3_path("s3://my-bucket/uploads", "document.pdf")
print(result)
출력 예시:
{
'bucket': 'my-bucket',
's3_key': 'uploads/2024/03/15/550e8400-e29b-41d4-a716-446655440000.pdf',
'full_path': 's3://my-bucket/uploads/2024/03/15/550e8400-e29b-41d4-a716-446655440000.pdf'
}
urlparse
는 URL이 완벽하게 형식에 맞지 않아도 최선을 다해 파싱을 시도합니다.urlparse
는 URL 처리에 있어 매우 유용한 도구입니다.
특히 웹 애플리케이션 개발, 파일 시스템 경로 처리, API 통합 등에서 URL을 분석하고 조작해야 할 때 필수적인 도구입니다.
올바른 사용을 위해서는 URL의 구조를 이해하고, 각 컴포넌트의 의미와 역할을 파악하는 것이 중요합니다.