Python URL을 파싱하고 조작할 수 있는 furl 라이브러리 알아보기

오늘은 Python에서 URL을 파싱하고 조작할 수 있는 furl 라이브러리를 알아보려 합니다.

furl 설치

우선 virtualenv로 파이썬 환경을 분리해줍니다.

pip3 install virtualenv
virtualenv -mvenv env

env라는 이름의 가상 환경을 생성합니다.

source env/bin/activate

가상환경을 폴더에서 활성화합니다.

pip3 install --upgrade pip

pip의 업그레이드가 존재하는지 확인하고 진행합니다.

pip install furl

pip로 furl을 설치합니다.

예제

from furl import furl

furl을 가져옵니다.

f = furl('https://www.google.co.kr/search?source=hp&q=google')
f.args['test'] = 'test'
del f.args['source']
print(f.url)

딕셔너리 형식으로 쿼리를 추가하거나 del 키워드로 삭제할 수 있습니다.

print(furl('https://www.google.co.kr/search?source=hp&q=google').add({'test': 'test'}).url)

인라인으로 url의 쿼리를 추가할 수 있습니다.

print(furl('https://www.google.co.kr/search?source=hp&q=google').set({'q': 'google'}).url)

인라인으로 url의 쿼리를 설정할 수 있습니다.

print(furl('https://www.google.co.kr/search?source=hp&q=google').remove(['source']).url)

인라인으로 url의 쿼리를 제거할 수 있습니다.

f = furl('http://www.google.com/')
f.fragment.path.segments = ['first', 'directories']
f.fragment.args = {'test': 'test'}
print(f.url)

fragment로도 쿼리를 설정할 수 있습니다.

f = furl('http://www.google.com/path?q=google')
print(f.copy().remove(path=True).url)
print(f.copy().set(host='host.com').url)
print(f.copy().join('/index.html').url)
print(f.copy().add(fragment_path='add_fragment').url)

url을 복사해서 원본을 수정하지 않고도 조작할 수 있습니다.

print(f.asdict())

원본을 딕셔너리로 출력하면 처음 furl 객체를 생성할 때 넣었던 url 그대로 존재함을 알 수 있습니다.

Written on July 13, 2019