Python URL 클래스 purl 라이브러리 알아보기
오늘은 Python에서 URL 클래스를 구현한 purl 라이브러리를 알아보려 합니다.
purl 설치
우선 virtualenv로 파이썬 환경을 분리해줍니다.
pip3 install virtualenv
virtualenv -mvenv env
env라는 이름의 가상 환경을 생성합니다.
source env/bin/activate
가상환경을 폴더에서 활성화합니다.
pip3 install --upgrade pip
pip의 업그레이드가 존재하는지 확인하고 진행합니다.
pip install purl
pip로 purl을 설치합니다.
예제
from purl import URL
purl을 가져옵니다.
str_url = URL('https://www.google.com/search?q=google')
print(str_url)
print(str_url.as_string())
argument_url = URL(scheme='https', host='www.google.com', path='/search', query='q=google')
print(argument_url)
print(argument_url.as_string())
inline_url = URL().scheme('https').domain('www.google.com').path('search').query_param('q', 'google')
print(inline_url)
print(inline_url.as_string())
문자열, 인자, 인라인으로 url 객체를 생성할 수 있습니다.
u = URL('postgres://username:password@localhost:1234/test?ssl=true')
print(u.scheme())
print(u.host())
print(u.domain())
print(u.username())
print(u.password())
print(u.netloc())
print(u.port())
print(u.path())
print(u.query())
print(u.path_segments())
print(u.query_param('ssl'))
print(u.query_param('ssl', as_list=True))
print(u.query_params())
print(u.has_query_param('ssl'))
print(u.subdomains())
데이터베이스 url도 파싱해서 스키마, 호스트 그리고 사용자 이름과 비밀번호와 같은 정보를 분리해서 출력할 수 있습니다.
u = URL.from_string('https://github.com/minwook-shin')
print(u.path_segment(0))
인덱스에 맞는 segment를 출력합니다.
new_url = u.add_path_segment('minwook-shin.github.com')
print(new_url.as_string())
경로에 segment를 추가합니다.
from purl import expand
print(expand(u"{/path*}", {'path': ['sub', 'index']}))
expand 함수로 url 템플릿을 만들 수 있습니다.
from purl import Template
template = Template("http://example.com{/path*}")
url = template.expand({'path': ['sub', 'index']})
print(url.as_string())
Template 객체로도 url 템플릿을 만들 수 있습니다.
Written on July 15, 2019