[Python] 파이썬 URL 다루는 법 (Python urllib)
파이썬 URL 다루는 법 (Python urllib)
파이썬에서는 기본적으로 URL과 쿼리스트링(파라미터)를 다룰 수 있는 기능을 urllib.parse 를 통해 제공하고 있습니다. urllib.parse 모듈은 python2에서 urlparse라는 모듈이었으나, python3.x 부터 urllib.parse로 변경되었습니다.
URL 문자열을 파싱하기
urlparse() 를 사용하여 URL을 해석할 수 있습니다.
from urllib import parse
url = parse.urlparse('https://www.exeam.org/index.html?examParam1=value1&examParam2=value2#welcome')
print(url)
결과
ParseResult(scheme='https', netloc='www.exeam.org', path='/index.html', params='', query='examParam1=value1&examParam2=value2', fragment='welcome')
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
쿼리 스트링(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')
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']}
문자열 리터럴을 그대로 전달하고 싶은 경우 쿼리스트링 부분의 문자열만 전달합니다.
from urllib import parse
>>>parse.parse_qs('examParam1=value1&examParam2=value2') #{'examParam1': ['value1'], 'examParam2': ['value2']}
하나의 파라미터 name에 값이 여러개인 경우에는 다음과 같이 리턴합니다.
from urllib import parse
>>> parse.parse_qs('examParam1=value1&examParam1=value2') #{'examParam1': ['value1', 'value2']}
parse_qsl() 사용 방법
만약 쿼리스트링 변환 결과를 파라미터와-값 쌍으로 이루어진 튜플 리스트로 얻고 싶은 경우 parse_qsl() 을 사용합니다.
하나의 파라미터에 값이 여러개인 경우에도 여러개의 튜플이 됩니다.
from urllib import parse
>>> parse.parse_qsl('examParam1=value1&examParam1=value2') #[('examParam1', 'value1'), ('examParam1', 'value2')]
이어지는 글
[Python] 파이썬 URL Encoding 하는 방법. 한글 인코딩 하기
더욱 자세한 내용은 공식문서 참고
https://docs.python.org/3.4/library/urllib.parse.html
'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 |
도로락
WriterIT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그