1. urllib.parse
urllib.parse는 URL을 구성요소로 파싱하는 모듈이다.
urllib.parse 모듈은 URL (uniform resource locator) 문자열을 addressing scheme, network location, path 등의 구성 요소로 구분하고, 이를 다시 URL 문자열로 결합하며, 상대 URL을 주어진 base URL을 기준으로 절대 경로로 변환하는 등의 기능을 수행한다.
이 모듈은 Relative Uniform Resource Locatorsd에 대한 인터넷 RFC에 맞춰 설계되었다.
지원하는 URL scheme들은 다음과 같다.
- schemes: file, ftp, gopher, hdl, http, https, imap, mailto, mms, news, nntp, prospero, rsync, rtsp, rtspu, sftp, shttp, sip, sips, snews, svn, svn+ssh, telnet, wais, ws, wss
urllib.parse 모듈은 URL parsing과 URL quoting의 두가지 큰 카테고리로 나뉘어진다. 아래에서는 URL parsing하는 메서드인 urlparse에 대해서 설명한다.
2. urllib.parse.urlparse
URL parsing 함수는 URL 문자를 각 구성 요소로 분리하거나, 각 요소들을 하나의 URL로 합치는 기능을 한다.
- urllib.parse.urlparse(urlstring, scheme='', allow_fragments=True)
from urllib.parse import urlparse
parsed = urlparse("https://www.test.com:8000/%test/contents.html")
print(parsed)
# ParseResult(scheme='https', netloc='www.test.com:8000', path='/%test/contents.html', params='', query='', fragment='')
print(parsed.scheme) # 'http'
print(parsed.port) # 8000
print(parsed.geturl()) # 'http://www.test.com:8000/%test/contents.html'
- RFC 1808에 따라 netloc는 '//'로 시작되어야 한다.
- named tuple
attribute | index | value | value if not present |
scheme | 0 | URL scheme specifier | scheme parameter |
netloc | 1 | Network location part | empty string |
path | 2 | Hierarchical path | empty string |
params | 3 | Parameters for last path element | empty string |
query | 4 | Query component | empty string |
fragment | 5 | Fragment identifier | empty string |
username | User name (contained netloc) | None | |
password | Password (contained netloc) | None | |
hostname | Host name (lower case, contained netloc) | None | |
port | Port number (integer, contained netloc) | None |
- _replace(key=value): key로 주어진 named tuple의 값을 value로 변경한 ParseResult를 반환한다.
[reference]
- https://docs.python.org/3/library/urllib.parse.html
'프로그래밍언어 > Python' 카테고리의 다른 글
[Python] Magic method - 객체 표현 (0) | 2021.12.15 |
---|---|
[Python] Magic method - 객체 생성, 초기화 (0) | 2021.12.15 |
[Python] argparser (0) | 2021.09.11 |
[Python] Python 병렬처리 - threading (3) (0) | 2021.05.08 |
[Python] Python 병렬처리 - threading (2) (0) | 2021.04.25 |