php location.href传递参数_接口自动化之Ptyhon3+Requests传递URL参数

Requests传递 URL 参数
你也许经常想为 URL 的查询字符串(query string)传递某种数据。如果你是手工构建 URL,那么数据会以键/值对的形式置于 URL 中,跟在一个问号的后面。例如, http://www.bcbxhome.com/bcbxxy/search.php?key=val。Requests 允许你使用 params 关键字参数,以一个字符串字典来提供这些参数。举例来说,如果你想传递 key1=value1 和 key2=value2 到 http://www.bcbxhome.com/bcbxxy/search.php ,那么你可以使用如下代码:

>>> payload = {'key1': 'value1', 'key2': 'value2'}>>> r = requests.get(" http://www.bcbxhome.com/bcbxxy/search.php", params=payload)

实战操作一下吧:

>>>payload = {'mod': 'forum', 'searchid': '8', 'orderby': 'lastpost', 'ascdesc': 'desc', 'searchsubmit': 'yes', 'kw': '接口自动化'}>>>r = requests.get(" http://www.bcbxhome.com/bcbxxy/search.php", params=payload)

通过打印输出该 URL,你能看到 URL 已被正确编码:

>>> print(r.url)http://www.bcbxhome.com/bcbxxy/search.php?mod=forum&searchid=8&orderby=lastpost&ascdesc=desc&searchsubmit=yes&kw=%E6%8E%A5%E5%8F%A3%E8%87%AA%E5%8A%A8%E5%8C%96

注意字典里值为 None 的键都不会被添加到 URL 的查询字符串里。

>>>payload = {'mod': 'forum', 'searchid': '8', 'orderby': 'lastpost', 'ascdesc': 'desc', 'searchsubmit': 'yes', 'kw': None}>>> r = requests.get('http://httpbin.org/get', params=payload)>>> print(r.url)http://www.bcbxhome.com/bcbxxy/search.php?mod=forum&searchid=8&orderby=lastpost&ascdesc=desc&searchsubmit=yes

你还可以将一个列表作为值传入:

>>> payload = {'mod': 'forum', 'searchid': '8', 'orderby': 'lastpost', 'ascdesc': 'desc', 'searchsubmit': 'yes', 'kw': ['接口','自动化']}>>> r = requests.get('http://httpbin.org/get', params=payload)>>> print(r.url)http://www.bcbxhome.com/bcbxxy/search.php?mod=forum&searchid=8&orderby=lastpost&ascdesc=desc&searchsubmit=yes&kw=%E6%8E%A5%E5%8F%A3&kw=%E8%87%AA%E5%8A%A8%E5%8C%96

完整代码如下:

import requestspayload = {'mod': 'forum', 'searchid': '8', 'orderby': 'lastpost', 'ascdesc': 'desc', 'searchsubmit': 'yes', 'kw': '接口自动化'}result = requests.get(" http://www.bcbxhome.com/bcbxxy/search.php", params=payload)print(result.url)payload = {'mod': 'forum', 'searchid': '8', 'orderby': 'lastpost', 'ascdesc': 'desc', 'searchsubmit': 'yes', 'kw': None}result = requests.get(" http://www.bcbxhome.com/bcbxxy/search.php", params=payload)print(result.url)payload = {'mod': 'forum', 'searchid': '8', 'orderby': 'lastpost', 'ascdesc': 'desc', 'searchsubmit': 'yes', 'kw': ['接口','自动化']}result = requests.get(" http://www.bcbxhome.com/bcbxxy/search.php", params=payload)print(result.url)

对应结果如下:

http://www.bcbxhome.com/bcbxxy/search.php?mod=forum&searchid=8&orderby=lastpost&ascdesc=desc&searchsubmit=yes&kw=%E6%8E%A5%E5%8F%A3%E8%87%AA%E5%8A%A8%E5%8C%96http://www.bcbxhome.com/bcbxxy/s ... sc&searchsubmit=yeshttp://www.bcbxhome.com/bcbxxy/s ... A%E5%8A%A8%E5%8C%96

有没有疑问为啥kw后面的汉字变成了%+英文+数字?
这个叫url编码,这里就不展开细讲了可以去这里尝试一下http://www.jsons.cn/urlencode/

7f52e81a728f9eed99a33d8ee0da2323.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值