YARL로 URL 다루기: 설치부터 객체 활용까지

YARL 설치 방법

YARL(Yet Another URL Library)은 Python에서 URL을 쉽게 다루기 위한 라이브러리입니다. 다음 두 가지 방법으로 설치할 수 있습니다.

pip을 이용한 간편 설치

터미널에서 다음 명령어를 실행하면 최신 버전의 YARL이 자동으로 설치됩니다.

pip install yarl

이 명령은 PyPI에서 YARL과 함께 필요한 의존성(dependency) 패키지들을 함께 내려받아 설치합니다.

소스 코드로 설치하기

개발 중인 최신 버전을 사용하거나, 미리 빌드된 패키지가 제공되지 않는 운영체제에서는 소스 코드로 설치할 수 있습니다.

git clone https://gitcode.com/gh_mirrors/ya/yarl
cd yarl
pip install .

C 확장 기능 없이 순수 Python 환경에서만 실행하려면 --config-settings=pure-python=false 옵션을 추가할 수 있습니다. 단, 이 경우 성능이 다소 저하될 수 있습니다.

pip install yarl --config-settings=pure-python=false

URL 객체 생성 및 기본 사용법

문자열로 URL 객체 만들기

URL 클래스를 사용하면 간단히 문자열을 URL 객체로 변환할 수 있습니다.

from yarl import URL

my_url = URL('https://www.python.org/~guido?arg=1#frag')
print(my_url)

URL 구성 요소 접근하기

URL 객체는 각 구성 요소를 속성으로 제공합니다.

print(my_url.scheme)       # 'https'
print(my_url.host)         # 'www.python.org'
print(my_url.path)         # '/~guido'
print(my_url.query_string) # 'arg=1'
print(my_url.fragment)     # 'frag'

YARL은 자동으로 인코딩/디코딩을 처리합니다. 비ASCII 문자가 포함된 URL의 경우 디코딩된 값과 원시 인코딩 값을 각각 확인할 수 있습니다.

url = URL('https://www.python.org/길')
print(url.path)      # '/길'
print(url.raw_path)  # '/%EA%B8%B8'

URL 객체 고급 조작

나눗셈 연산자로 경로 추가

슬래시(/) 연산자를 사용하여 경로를 직관적으로 이어붙일 수 있습니다.

base = URL('https://example.com')
full = base / 'api' / 'v2' / 'data'
print(full)  # URL('https://example.com/api/v2/data')

쿼리 파라미터 업데이트

update_query 메서드를 사용하면 쿼리 파라미터를 추가하거나 수정할 수 있습니다.

query_url = URL('https://example.com/search')
updated = query_url.update_query({'q': 'python', 'page': 2})
print(updated)  # URL('https://example.com/search?q=python&page=2')

나머지 연산자(%)를 사용하여 같은 동작을 더 간단히 표현할 수도 있습니다.

updated = query_url % {'q': 'python', 'page': 2}

상대 경로 URL 생성

절대 경로뿐 아니라 상대 경로도 지원합니다.

relative = URL('/assets/img/icon.svg')
print(relative.absolute)  # False

YARL의 핵심 장점

자동 인코딩 및 디코딩

ASCII가 아닌 문자를 포함한 URL도 YARL이 알아서 표준 형식으로 변환합니다.

url = URL('http://εμπορικόσήμα.eu/경로/這裡')
print(str(url))                 # 인코딩된 URL 출력
print(url.human_repr())         # 사람이 읽기 쉬운 형태 출력

불변(immutable) 객체

URL 객체는 한 번 생성되면 변경할 수 없습니다. 모든 수정 작업은 새로운 객체를 반환하므로 원본이 의도치 않게 바뀌는 것을 방지합니다.

original = URL('https://example.com')
modified = original.with_scheme('http')  # 새로운 객체 생성

다양한 URL 조작 메서드

프로토콜, 호스트, 경로, 쿼리 등 URL의 각 부분을 쉽게 수정할 수 있는 메서드를 제공합니다.

url = URL('http://example.com/path?a=b')
url = url.with_scheme('https')
url = url.with_host('python.org')
url = url.with_path('/new/path')
url = url.without_query_params('a')

YARL을 선택해야 하는 이유

YARL은 간결한 API, 자동 인코딩 처리, 불변 객체 설계를 통해 Python에서 URL을 안전하고 효율적으로 다룰 수 있게 해줍니다. 설치부터 기본 사용, 고급 조작까지 익히면 복잡한 URL 처리 작업도 쉽게 해결할 수 있습니다.

더 자세한 내용은 공식 문서 또는 GitHub 저장소를 참고하시기 바랍니다.

태그: YARL python URL 웹 개발 pip

8월 1일 14:19에 게시됨