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/
總結
以上是生活随笔為你收集整理的php url传递参数_python+Requests接口自动化测试之传递 URL 参数的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。