파이썬 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




이어지는 글 


더욱 자세한 내용은 공식문서 참고
블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

댓글을 달아 주세요! 질문 환영합니다!