Python模块(包)
urllib模块之urllib.parse的常用函数和用法
urllib.parse的常用函数和用法
1,导入urllib.parse,有两种方法
方法1,from urllib import parse
方法2,import urllib.parse
PS:下面的例子都是用第一种方法
2,parse.urlparse(url)方法使用
urlparse(将url拆分成6个部分,放在一个元祖里面),
from urllib import parse url = 'http://api.i.python-china.com:8088/wd_r1/football/dkss4/720264/index.m3u8?msisdn=202011141500238879d67d815d44dda5ba9af94de9195f&mdspid=&spid=&netType=0&sid=7510006722&pid=2028597139×tamp=20201114150023&Channel_ID=0116_25000000-99000-100300010010001&ProgramID=695601611&ParentNodeID=-99&assertID=7510006722&client_ip=62.234.128.196&SecurityKey=20201114150023&mvid=7510003143&mcid=500020&mpid=120000120976&playurlVersion=SJ-A1-0.0.3&userid=&jmhm=&videocodec=h264&encrypt=176b4e117412edd99509c281ecbd9b91' url_change = parse.urlparse(url) print(url_change) # 结果:ParseResult(scheme='http', netloc='api.i.python-china.com:8088', path='/wd_r1/football/dkss4/720264/index.m3u8', params='', query='msisdn=202011141500238879d67d815d44dda5ba9af94de9195f&mdspid=&spid=&netType=0&sid=7510006722&pid=2028597139×tamp=20201114150023&Channel_ID=0116_25000000-99000-100300010010001&ProgramID=695601611&ParentNodeID=-99&assertID=7510006722&client_ip=62.234.128.196&SecurityKey=20201114150023&mvid=7510003143&mcid=500020&mpid=120000120976&playurlVersion=SJ-A1-0.0.3&userid=&jmhm=&videocodec=h264&encrypt=176b4e117412edd99509c281ecbd9b91', fragment='')
scheme:协议http或者https
netloc:域名,包括端口
path:绝对路径
params:请求的参数,默认为空
query:请求的查询条件
fragment:标识符 默认为空
3,parse.parse_qs(query)和parse.parse_qsl(query)
parse.parse_qs(query)使用parse_qs返回query(查询条件的)字典
from urllib import parse url = 'http://api.www.python-china.com:8088/wd_r1/football/dkss4/720264/index.m3u8?msisdn=202011141500238879d67d815d44dda5ba9af94de9195f&mdspid=&spid=&netType=0&sid=7510006722&pid=2028597139×tamp=20201114150023&Channel_ID=0116_25000000-99000-100300010010001&ProgramID=695601611&ParentNodeID=-99&assertID=7510006722&client_ip=62.234.128.196&SecurityKey=20201114150023&mvid=7510003143&mcid=500020&mpid=120000120976&playurlVersion=SJ-A1-0.0.3&userid=&jmhm=&videocodec=h264&encrypt=176b4e117412edd99509c281ecbd9b91' url_change = parse.urlparse(url) dict_query = parse.parse_qs(url_change.query) print(dict_query) # 结果{'msisdn': ['202011141500238879d67d815d44dda5ba9af94de9195f'], 'netType': ['0'], 'sid': ['7510006722'], 'pid': ['2028597139'], 'timestamp': ['20201114150023'], 'Channel_ID': ['0116_25000000-99000-100300010010001'], 'ProgramID': ['695601611'], 'ParentNodeID': ['-99'], 'assertID': ['7510006722'], 'client_ip': ['62.234.128.196'], 'SecurityKey': ['20201114150023'], 'mvid': ['7510003143'], 'mcid': ['500020'], 'mpid': ['120000120976'], 'playurlVersion': ['SJ-A1-0.0.3'], 'videocodec': ['h264'], 'encrypt': ['176b4e117412edd99509c281ecbd9b91']}
parse.parse_qsl(query)使用parse_qsl返回query(查询条件的)列表
from urllib import parse url = 'http://api.www.python-china.com:8088/wd_r1/football/dkss4/720264/index.m3u8?msisdn=202011141500238879d67d815d44dda5ba9af94de9195f&mdspid=&spid=&netType=0&sid=7510006722&pid=2028597139×tamp=20201114150023&Channel_ID=0116_25000000-99000-100300010010001&ProgramID=695601611&ParentNodeID=-99&assertID=7510006722&client_ip=62.234.128.196&SecurityKey=20201114150023&mvid=7510003143&mcid=500020&mpid=120000120976&playurlVersion=SJ-A1-0.0.3&userid=&jmhm=&videocodec=h264&encrypt=176b4e117412edd99509c281ecbd9b91' url_change = parse.urlparse(url) dict_query = parse.parse_qsl(url_change.query) print(dict_query) # 结果[('msisdn', '202011141500238879d67d815d44dda5ba9af94de9195f'), ('netType', '0'), ('sid', '7510006722'), ('pid', '2028597139'), ('timestamp', '20201114150023'), ('Channel_ID', '0116_25000000-99000-100300010010001'), ('ProgramID', '695601611'), ('ParentNodeID', '-99'), ('assertID', '7510006722'), ('client_ip', '62.234.128.196'), ('SecurityKey', '20201114150023'), ('mvid', '7510003143'), ('mcid', '500020'), ('mpid', '120000120976'), ('playurlVersion', 'SJ-A1-0.0.3'), ('videocodec', 'h264'), ('encrypt', '176b4e117412edd99509c281ecbd9b91')]
parse.urlencode(query_dict)将字典形式的query_dict拼接成url形式
from urllib import parse dict_data = {'msisdn': ['202011141500238879d67d815d44dda5ba9af94de9195f'], 'netType': ['0'], 'sid': ['7510006722'], 'pid': ['2028597139'], 'timestamp': ['20201114150023'], 'Channel_ID': ['0116_25000000-99000-100300010010001'], 'ProgramID': ['695601611'], 'ParentNodeID': ['-99'], 'assertID': ['7510006722'], 'client_ip': ['62.234.128.196'], 'SecurityKey': ['20201114150023'], 'mvid': ['7510003143'], 'mcid': ['500020'], 'mpid': ['120000120976'], 'playurlVersion': ['SJ-A1-0.0.3'], 'videocodec': ['h264'], 'encrypt': ['176b4e117412edd99509c281ecbd9b91']} new_dict = {} for k,v in dict_data.items(): new_dict[k] = v[0] # print(new_dict) new_query = parse.urlencode(new_dict) print(new_query) # 结果:msisdn=202011141500238879d67d815d44dda5ba9af94de9195f&netType=0&sid=7510006722&pid=2028597139×tamp=20201114150023&Channel_ID=0116_25000000-99000-100300010010001&ProgramID=695601611&ParentNodeID=-99&assertID=7510006722&client_ip=62.234.128.196&SecurityKey=20201114150023&mvid=7510003143&mcid=500020&mpid=120000120976&playurlVersion=SJ-A1-0.0.3&videocodec=h264&encrypt=176b4e117412edd99509c281ecbd9b91
parse.quote(url_str)和parse.quote_plus(url_str)
parse.quote(url_str)编码url_str,不编码斜线
parse.quote_plus(url_str)编码url_str,编码斜线
from urllib import parse url_str = 'name=bayi&key=b/c' # 不编码/ print(parse.quote(url_str)) # name%3Dbayi%26key%3Db/c # 编码/ print(parse.quote_plus(url_str)) # name%3Dbayi%26key%3Db%2Fc
parse.unquote(url_str)和parse.unquote_plus(url_str)
parse.unquote(url_str)解码url_str,不解码+号
parse.unquote_plus(url_str)解码url_str,解码+号为空格
from urllib import parse url_str = '1+2' # 不编码+号 print(parse.unquote(url_str)) # 1+2 # 编码+号,+号解码成空格 print(parse.unquote_plus(url_str)) # 1 2
最后修改:2020年11月14日 18:06