Files
nc_http/nc_http/tools/helpers/url.py
2023-02-23 14:59:36 +08:00

51 lines
1.3 KiB
Python

from six.moves.urllib import parse as urlparse
def url_parse_query(url):
"""
从 url 提取 query string 字典
:param url:
:return:
"""
return dict(urlparse.parse_qsl(urlparse.urlparse(url).query, True))
def url_without_query(url):
"""
移除 url 中 query string
"""
url = urlparse.urlparse(url)
return urlparse.urlunparse((url.scheme, url.netloc, url.path, url.params, '', url.fragment))
def build_url(base, additional_params=None):
"""
url 中增加 query string 参数
:param base:
:param additional_params:
:return:
"""
url = urlparse.urlparse(base)
query_params = {}
query_params.update(urlparse.parse_qsl(url.query, True))
if additional_params is not None:
query_params.update(additional_params)
for k, v in additional_params.items():
if v is None:
query_params.pop(k)
return urlparse.urlunparse(
(url.scheme, url.netloc, url.path, url.params, urlparse.urlencode(query_params), url.fragment)
)
if __name__ == '__main__':
s = url_parse_query('http://api_w.qiange.so/hz/shorturl_tongji?short_url=BkPMeb')
print(s)
s = url_without_query('http://api_w.qiange.so/hz/shorturl_tongji?short_url=BkPMeb')
print(s)
s = build_url('http://www.baidu.com', {'a': 1, 'b': 2})
print(s)