Python urllib.parse
이 모듈은 하는 일이 굉장히 단순하고 명확하므로 코드를 적는 것으로 정리를 끝낸다.
Cheat Sheet
url parsing
import urllib.parse as up
url = 'http://api.phople.us/me?user=길동&pass=1234#intro'
print(up.urlparse(url)) # ParseResult(scheme='http', netloc='api.phople.us', path='/me', params='', query='user=길동&pass=1234', fragment='intro')
print(up.urljoin('http://base.com', 'child#section')) # http://base.com/child#section
print(up.urldefrag(url)) # DefragResult(url='http://api.phople.us/me?user=길동&pass=1234', fragment='intro')
url percent escape
ascii 문자가 아닌 녀석들에 escape처리한 결과물을 반환한다.
import urllib.parse as up
# quote-safe
print(up.quote('abcde'))
print(up.quote('12345'))
print(up.quote('_-')) # _- (whitelist)
# quote target
print(up.quote(' ')) # %20%20
print(up.quote('!@#$%^&*()|\\')) # %21%40%23%24%25%5E%26%2A%28%29%7C%5C
print(up.quote('가나다라')) # %EA%B0%80%EB%82%98%EB%8B%A4%EB%9D%BC
# other examples
print(up.quote('a b')) # a%20b
print(up.quote_plus('a b')) # a+b
print(up.unquote(up.quote('가 나'))) # 가 나
print(up.unquote_plus(up.quote_plus('가 나'))) # 가 나
print(up.urlencode({'user': "길동123", 'pass': '비밀'})) # pass=%EB%B9%84%EB%B0%80&user=%EA%B8%B8%EB%8F%99123
quote_plus도 종종 사용되는 url escape 방식이다. 단 이 방식으로 escape처리한 경우, unquote_plus를 사용해서 escape를 해제해야 한다. 그렇지 않으면 ‘가+나’가 반환될 것이다.
urlencode()
를 사용하면 한번에 쉽게 여러 문자열 url escape를 할 수 있다. 보통 이런 경우는 data를 작성한 경우겠다. 귀찮게 파라미터 하나하나 quote()
불러서 하지 말자.
'Python' 카테고리의 다른 글
DRF ModelViewSet method (0) | 2016.02.25 |
---|---|
Python update all package (0) | 2016.02.13 |
Python BeautifulSoup4 (0) | 2016.02.12 |
Python global variable (0) | 2016.02.10 |
Python argparse (0) | 2016.02.10 |