python request参数?
Python中的requests库是实现了HTTP协议的基础库,它使HTTP请求变得容易且可以灵活地传递参数。本文将从多个角度分析Python中request参数的使用。
一、请求参数的基本用法
首先,我们看一下requests发送GET请求的基本用法:
import requests
r = requests.get('https://www.example.com', params={'key': 'value'})
print(r.url)
这里的params参数是请求参数,可以是一字典类型的参数,也可以是一个字符串。这两种写法效果都是一样的,以'key1=value1&key2=value2'的形式拼接在url的查询部分,发送给服务器,Server端就可以解析我们发过去的数据,进行相关处理,返回对应的数据。
如图所示:
二、请求参数的传参方式
params是requests的一种传参方式,除此之外,requests使用data、json、headers等几种传参方式。
1、data参数
data是一个字典类型的请求参数,如下所示:
import requests
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post('https://www.example.com', data=payload)
print(r.url)
这种情况下,发送的是以表单的形式进行编码的数据,对于表单来说,数据类型都是application/x-www-form-urlencoded。requests会把data参数自动序列化成表单类型,然后添加到请求头中。
2、json参数
json是一个序列化后的json字符串,可以直接传递给服务端。如果我们想要传递json格式的数据,可以这样做:
import requests
import json
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post('https://www.example.com', json=json.dumps(payload))
print(r.url)
3、header参数
header可以携带请求头中的一些参数信息,如User-Agent来模拟打开某个浏览器。可以这样写:
import requests
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
r = requests.post('https://www.example.com', headers=headers)
print(r.text)
三、请求参数的特殊用法
1、timeout
如果请求时间太长,我们可以设置它的时间,单位是秒:
import requests
requests.get('https://www.example.com', timeout=10)
2、proxies
有时候需要通过代理访问某个网站,这时可以使用proxies参数。proxies参数是字典类型的,包含http和https两个键,它们分别对应一个代理地址,可以这样使用:
import requests
proxies = {'http': 'http://{}:{}'.format('192.168.0.1', '8888'), 'https': 'https://{}:{}'.format('192.168.0.1', '8888')}r = requests.post('https://www.example.com', proxies=proxies)
print(r.text)
四、总结
请求参数在requests中是一种非常重要的使用方式,通过requests发送请求时使用不同的参数,可以带来不一样的效果。包括:params参数在请求中添加查询参数;data参数在header中添加form表单;json参数在header中添加json类型数据;header参数模拟浏览器访问。另外,还可以通过timeout参数设置超时时间,以避免用户等待过长的响应时间,通过proxies参数设置代理地址,以实现通过代理访问网站的需求。