파이썬 URL 다루는 법 (Python urllib)
파이썬에서는 기본적으로 URL과 쿼리스트링(파라미터)를 다룰 수 있는 기능을 urllib.parse 를 통해 제공하고 있습니다. urllib.parse 모듈은 python2에서 urlparse라는 모듈이었으나, python3.x 부터 urllib.parse로 변경되었습니다.
URL 문자열을 파싱하기
urlparse() 를 사용하여 URL을 해석할 수 있습니다.
1
2
3
4
5
6
7 |
from urllib import parse
url = parse.urlparse('https://www.exeam.org/index.html?examParam1=value1&examParam2=value2#welcome')
print(url) |
cs |
결과
ParseResult(scheme='https', netloc='www.exeam.org', path='/index.html', params='', query='examParam1=value1&examParam2=value2', fragment='welcome') |
cs |
ParseResult 속성
urlparse() 를 통해 URL을 튜플의 하위 클래스인 ParseResult 클래스로 변환할 수 있습니다.
ParseResult의 속성은 다음과 같습니다.
URL 예시) scheme://username:passwd@netloc:port/path;params?query#fragment
속성 |
값 |
설명 |
scheme |
scheme |
스키마(http, http, ftp, mailto 등) |
username |
username |
사용자 이름 |
passwd | passwd | 비밀번호 |
hostname |
netloc |
호스트명 |
port |
port |
port번호 |
netloc |
username:passwd@netloc:port |
네트워크 위치 |
path |
/path |
경로 |
params |
;params |
URL 파라미터 |
query |
?query |
쿼리스트링 |
fragment |
#fragment |
fragement 식별자 |
속성 얻는 방법
from urllib import parse
url = parse.urlparse('https://www.exeam.org/index.html?examParam1=value1&examParam2=value2#welcome')
>>> url.geturl() # https://www.exeam.org/index.html?examParam1=value1&examParam2=value2#welcome
>>> url.scheme #속성값 얻기 > https
>>> url[0] #인덱스로 접근 가능 > https |
cs |
쿼리 스트링(Query String) 다루기
Http URL Parameter를 다루려면 parse_qs() 메서드를 사용하면 됩니다.
parse_qs() 는 지정된 쿼리스트링을 해석하여 dict() 로 반환합니다.
parse_qsl() 을 사용하는 경우에는 파라미터와 값을 쌍으로 갖는 튜플 리스트로 반환받을 수 있습니다.
parse_qs(qs, keep_blank_values=False, strict_parsing=False, encoding='utf-8', errors='replace') |
cs |
qs - 쿼리 스트링 문자열(str)을 지정합니다.
keep_blank_values - False로 지정하면 빈 값이 있는 쿼리스트링이 포함된 경우 제외합니다. True인 경우 빈 문자로 인식.
strict_parsing - False로 지정하면 parse 중 오류가 발생했을 때 무시합니다.
encoding - Unicode로 디코딩할 때의 chareset을 지정합니다.
error - Unicode로 디코딩할 때의 동작을 지정합니다.
parse_qs() 사용 방법
parse_qs()에는 쿼리스트링 문자열을 지정해 주어야 합니다. url 객체로부터 추출하는 방법은 다음과 같습니다.
리턴타입은 딕셔너리 타입입니다.
from urllib import parse
url = parse.urlparse('http://www.exeam.org?examParam1=value1&examParam2=value2')
>>> parse.parse_qs(url.query) #딕셔너리 리턴 {'examParam1': ['value1'], 'examParam2': ['value2']} |
cs |
만약 문자열 리터럴을 그대로 전달하고 싶은 경우 쿼리스트링 부분의 문자열만 전달합니다.
from urllib import parse
>>>parse.parse_qs('examParam1=value1&examParam2=value2') #{'examParam1': ['value1'], 'examParam2': ['value2']} |
cs |
하나의 파라미터 name에 값이 여러개인 경우에는 다음과 같이 리턴합니다.
from urllib import parse
>>> parse.parse_qs('examParam1=value1&examParam1=value2') #{'examParam1': ['value1', 'value2']} |
cs |
parse_qsl() 사용 방법
만약 쿼리스트링 변환 결과를 파라미터와-값 쌍으로 이루어진 튜플 리스트로 얻고 싶은 경우 parse_qsl()을 사용합니다.
하나의 파라미터에 값이 여러개인 경우에도 여러개의 튜플이 됩니다.
from urllib import parse
>>> parse.parse_qsl('examParam1=value1&examParam1=value2') #{'examParam1': ['value1', 'value2']} #[('examParam1', 'value1'), ('examParam1', 'value2')] |
cs |
더욱 자세한 내용은 공식문서 참고
'Python' 카테고리의 다른 글
[Python] Jupyter Notebook(주피터 노트북) 설치 (0) | 2018.06.22 |
---|---|
[Python] 파이썬 기본 에디터 IDLE(Integrated Development and Learning Environment) (2) | 2018.06.17 |
[Python] 파이썬 URL Encoding 하는 방법. 한글 인코딩 하기 (2) | 2018.03.23 |
[Python] 파이썬 XML 다루는 법 (Python XML) (0) | 2018.03.23 |
[Python] 파이썬 다운로드 및 설치하기 (0) | 2017.12.26 |