-
urlparse
from urllib.parse import urlparse, urlunparse
result = urlparse('http://www.baidu.com/index.html;user?id=5#comment')
print(result)
ParseResult(scheme='http', netloc='www.baidu.com', path='/index.html', params='user', query='id=5', fragment='comment')
-
urlsplit
from urllib.parse import urlsplit,urlunsplit
result = urlsplit('http://www.baidu.com/index.html;user?id=5#comment')
print(result)
SplitResult(scheme='http', netloc='www.baidu.com', path='/index.html;user', query='id=5', fragment='comment')
注:urlparse和urlsplit都有一个allow_fragments参数,默认为True;若设置为False,它会被解析为path,parameters或者query的一部分,而fragment部分为空
-
urlencode
from urllib.parse import urlencode
params = {
'name' : 'germey',
'age' : 22
}
base_url = 'http://www.baidu.com?'
url = base_url + urlencode(params)
print(url)
http://www.baidu.com?name=germey&age=22
一般当某个post请求的"Content-Type"为"application/x-www-form-urlencoded"时,需要对post_data进行urlencode(urlencode(post_data))
-
quote & unquote
from urllib.parse import quote
keyword = '壁纸'
url = 'http://www.baidu.coms?wd='+quote(keyword)
print(url)
http://www.baidu.coms?wd=%E5%A3%81%E7%BA%B8
print(unquote(url))
http://www.baidu.coms?wd=壁纸
quote方法有个参数encoding,不同的encoding值,获取的url编码有一些不同
-
unicode
有一些字符串的形式包含大量’\u’字符如(“2019\u5e74\u5e74\u62a5\u8868”),可以这样来转换成中文
text = r'2019\u5e74\u5e74\u62a5\u8868'
print(text.encode().decode('unicode_escape'))
'2019年年报表'
-
requests.post()
在通过requests.post()进行POST请求时,传入报文的参数有两个,一个是data,一个是json。
data与json既可以是str类型,也可以是dict类型。
区别:
- 不管
json
是str
还是dict
,如果不指定headers
中的content-type
,默认为application/json
data
为dict
时,如果不指定content-type
,默认为application/x-www-form-urlencoded
,相当于普通form表单提交的形式data
为str
时,如果不指定content-type
,默认为application/json
- 用data参数提交数据时,
request.body
的内容则为a=1&b=2
的这种形式,用json参数提交数据时,request.body
的内容则为’{"a": 1, "b": 2}'
的这种形式
在Chrome浏览器中,查看post请求下面的Form Data时,选择view soure可以看到post的数据的形式,若为a=1&b=2的形式,一般使用data参数;若为{“a”: 1, “b”: 2}的形式,一般使用json参数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)