Python3的urllib.parse常用函数小结
生活随笔
收集整理的這篇文章主要介紹了
Python3的urllib.parse常用函数小结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
1、獲取url參數
from urllib import parseurl = 'https://docs.python.org/3.5/search.html?q=parse&check_keywords=yes&area=default' parseResult = parse.urlparse(url) print(parseResult) # ParseResult(scheme='https', netloc='docs.python.org', path='/3.5/search.html', params='', query='q=parse&check_keywords=yes&area=default', fragment='') param_dict = parse.parse_qs(parseResult.query) print(param_dict) # {'q': ['parse'], 'check_keywords': ['yes'], 'area': ['default']} q = param_dict['q'][0] print(q) 'parse' # # 注意:加號會被解碼,可能有時并不是我們想要的 d = parse.parse_qs('proxy=183.222.102.178:8080&task=XXXXX|5-3+2') print(d)2、 urlencode
from urllib import parsequery = {"name": "walker", "age": 99} d = parse.urlencode(query) print(d) # name=walker&age=993、quote/quote_plus
from urllib import parse d = parse.quote('a&b/c') #未編碼斜線 print(d) # a%26b/c d1 = parse.quote_plus('a&b/c') #編碼了斜線 print(d1) # a%26b%2Fc4、unquote/unquote_plus
from urllib import parsed = parse.unquote('1+2') # 不解碼加號 print(d) # 1+2 d1 = parse.unquote_plus('1+2') # 把加號解碼為空格 print(d1) # 1 25、獲取url后面的參數為dict
from urllib import parsedef qs(url):query = parse.urlparse(url).queryreturn dict([(k, v[0]) for k, v in parse.parse_qs(query).items()])print(qs('http://url/api?param=2¶m2=4')) # {'param': '2', 'param2': '4'}6、URL參數拼接
from urllib import parsedef url_add_params(url, **params):pr = parse.urlparse(url)query = dict(parse.parse_qsl(pr.query))query.update(params)pr_list = list(pr)pr_list[4] = parse.urlencode(query)return parse.ParseResult(*pr_list).geturl()if __name__ == "__main__":url = 'http://bbs.163.com/viewthread.php'data = {"name": "hero", "111": "222"}print(url_add_params(url, **data))# result : http://bbs.163.com/viewthread.php?111=222&name=hero7、其他功能
urljoin
from urllib import parsed = parse.urljoin('http://www.oschina.com/tieba', 'index.php') print(d) # http://www.oschina.com/index.php d1 = parse.urljoin('http://www.oschina.com/tieba/', 'index.php') print(d1) # http://www.oschina.com/tieba/index.phpurlsplit
urlsplit和urlparse差不多,不過它不切分URL的參數。適用于遵循RFC2396的URL,每個路徑段都支持參數。這樣返回的元組就只有5個元素.
from urllib import parseurl = parse.urlsplit('http://www.baidu.com/index.php?username=guol') print(url) # SplitResult(scheme='http', netloc='www.baidu.com', path='/index.php', query='username=guol', fragment='')urlunsplit
使用urlsplit的格式組合成一個url,傳遞的元素必須是5個,或者直接將分解的元組重新組合
from urllib import parsed = parse.urlunsplit(("https", "i.cnblogs.com", "EditPosts.aspx", "a=a", "b=b")) print(d) # https://i.cnblogs.com/EditPosts.aspx?a=a#b=burlparse
urlparse(將url解析為組件,url必須以http://開頭)
from urllib import parsed = parse.urlparse("https://i.cnblogs.com/EditPosts.aspx?opt=1") print(d) # ParseResult(scheme='https', netloc='i.cnblogs.com', path='/EditPosts.aspx', params='', query='opt=1', fragment='')urlunparse
使用urlparse的格式組合成一個url,可以直接將urlparse的返回傳遞組合
from urllib import parsedata = parse.urlparse("https://i.cnblogs.com:80/EditPosts.aspx?opt=1") print(parse.urlunparse(data)) # https://i.cnblogs.com:80/EditPosts.aspx?opt=1轉載于:https://my.oschina.net/u/2474096/blog/1593377
總結
以上是生活随笔為你收集整理的Python3的urllib.parse常用函数小结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jdk紧急漏洞,XMLDecoder反序
- 下一篇: 开发:随笔记录之 Json字符串和对象的