python url_Python--URL操作

URL中的元素:通常意义上的URL

重定义URL:

通常意思上的URL的请求参数

重定义URL里面的请求参数

解析URL—urlparse

我使用的Python3.6,使用的是自带的库urllib,并使用里面的子模块parse。from urllib.parse import urlparse

url = "https://127.0.0.1/oauth/authorize" \

"?redirect_uri=https%3A%2F%2Fopen.bot.tmall.com%2Foauth%2Fcallback%3FskillId%3D18936%26token%3DNzkzODU4MzM3QUZFSElORkRWUQ%3D%3D" \

"&client_id=o92cvMIa5FzGbq4LpHJoaf2j" \

"&response_type=code" \

"&state=0.1354064097905866"

dest_str = urlparse(url)

print(dest_str)

打印出来:ParseResult(scheme='https', netloc='127.0.0.1', path='/oauth/authorize', params='', query='redirect_uri=https%3A%2F%2Fopen.bot.tmall.com%2Foauth%2Fcallback%3FskillId%3D18936%26token%3DNzkzODU4MzM3QUZFSElORkRWUQ%3D%3D&client_id=o92cvMIa5FzGbq4LpHJoaf2j&response_type=code&state=0.1354064097905866', fragment='')

它会解析为:scheme:https

netloc:127.0.0.1

path:/oauth/authorize

params:

query:redirect_uri=https%3A%2F%2Fopen.bot.tmall.com%2Foauth%2Fcallback%3FskillId%3D18936%26token%3DNzkzODU4MzM3QUZFSElORkRWUQ%3D%3D&client_id=o92cvMIa5FzGbq4LpHJoaf2j&response_type=code&state=0.1354064097905866

fragment:

解析query—使用parse_qsfrom urllib.parse import urlparse, parse_qs

url = "https://127.0.0.1/oauth/authorize" \

"?redirect_uri=https%3A%2F%2Fopen.bot.tmall.com%2Foauth%2Fcallback%3FskillId%3D18936%26token%3DNzkzODU4MzM3QUZFSElORkRWUQ%3D%3D" \

"&client_id=o92cvMIa5FzGbq4LpHJoaf2j" \

"&response_type=code" \

"&state=0.1354064097905866"

dest_str = urlparse(url)

print(parse_qs(dest_str.query))

打印出来:{'redirect_uri': ['https://open.bot.tmall.com/oauth/callback?skillId=18936&token=NzkzODU4MzM3QUZFSElORkRWUQ=='], 'client_id': ['o92cvMIa5FzGbq4LpHJoaf2j'], 'response_type': ['code'], 'state': ['0.1354064097905866']}

解析redirect_uri—使用urlparsefrom urllib.parse import urlparse, parse_qs

url = "https://127.0.0.1/oauth/authorize" \

"?redirect_uri=https%3A%2F%2Fopen.bot.tmall.com%2Foauth%2Fcallback%3FskillId%3D18936%26token%3DNzkzODU4MzM3QUZFSElORkRWUQ%3D%3D" \

"&client_id=o92cvMIa5FzGbq4LpHJoaf2j" \

"&response_type=code" \

"&state=0.1354064097905866"

dest_1 = urlparse(url)

dest_2 = parse_qs(dst_1.query)

dest_3 = urlparse(dest_2)

print(parse_qs(dest_str.query))

最终的# encoding: utf-8

from urllib.parse import urlparse, parse_qs

import html

url = "https://127.0.0.1/oauth/authorize" \

"?redirect_uri=https%3A%2F%2Fopen.bot.tmall.com%2Foauth%2Fcallback%3FskillId%3D18936%26token%3DNzkzODU4MzM3QUZFSElORkRWUQ%3D%3D" \

"&client_id=o92cvMIa5FzGbq4LpHJoaf2j" \

"&response_type=code" \

"&state=0.1354064097905866"

def main():

dest_1 = urlparse(url)

#print(dest_1) # ParseResult(scheme='https', netloc='127.0.0.1', path='/oauth/authorize', params='', query='redirect_uri=https%3A%2F%2Fopen.bot.tmall.com%2Foauth%2Fcallback%3FskillId%3D18936%26token%3DNzkzODU4MzM3QUZFSElORkRWUQ%3D%3D&client_id=o92cvMIa5FzGbq4LpHJoaf2j&response_type=code&state=0.1354064097905866', fragment='')

dest_2 = parse_qs(dest_1.query)

#print(dest_2) # {'redirect_uri': ['https://open.bot.tmall.com/oauth/callback?skillId=18936&token=NzkzODU4MzM3QUZFSElORkRWUQ=='], 'client_id': ['o92cvMIa5FzGbq4LpHJoaf2j'], 'response_type': ['code'], 'state': ['0.1354064097905866']}

dest_3 = dest_2['redirect_uri']

#print(dest_3) # ['https://open.bot.tmall.com/oauth/callback?skillId=18936&token=NzkzODU4MzM3QUZFSElORkRWUQ==']

print(str(dest_3)[2:-2]) # https://open.bot.tmall.com/oauth/callback?skillId=18936&token=NzkzODU4MzM3QUZFSElORkRWUQ==

dest_4 = urlparse(str(dest_3)[2:-2])

print(dest_4) # ParseResult(scheme='https', netloc='open.bot.tmall.com', path='/oauth/callback', params='', query='skillId=18936&token=NzkzODU4MzM3QUZFSElORkRWUQ==', fragment='')

dest_5 = parse_qs(dest_4.query)

print(dest_5) # {'skillId': ['18936'], 'token': ['NzkzODU4MzM3QUZFSElORkRWUQ==']}

dest_6 = dest_5['token'] # ['NzkzODU4MzM3QUZFSElORkRWUQ==']

print(str(dest_6)[2:-2]) # NzkzODU4MzM3QUZFSElORkRWUQ==

if __name__ == '__main__':

main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值