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 저장소를 참고하시기 바랍니다.