Pyhon : 爬虫Requests基础--更加复杂的 POST 请求

更加复杂的 POST 请求
通常,你想要发送一些编码为表单形式的数据——非常像一个 HTML 表单。要实现这个,只需简单地传递一个字典给 data 参数。你的数据字典在发出请求时会自动编码为表单形式:
payload = {‘key1’: ‘value1’, ‘key2’: ‘value2’}
r = requests.post(“http://httpbin.org/post”, data=payload)
print(r.text)
{

“form”: {
“key2”: “value2”,
“key1”: “value1”
},

}
你还可以为 data 参数传入一个元组列表。在表单中多个元素使用同一 key 的时候,这种方式尤其有效:
payload = ((‘key1’, ‘value1’), (‘key1’, ‘value2’))
r = requests.post(‘http://httpbin.org/post’, data=payload)
print(r.text)
{

“form”: {
“key1”: [
“value1”,
“value2”
]
},

}
很多时候你想要发送的数据并非编码为表单形式的。如果你传递一个 string 而不是一个 dict,那么数据会被直接发布出去。
例如,Github API v3 接受编码为 JSON 的 POST/PATCH 数据:
import json
url = ‘https://api.github.com/some/endpoint’
payload = {‘some’: ‘data’}
r = requests.post(url, data=json.dumps(payload))
此处除了可以自行对 dict 进行编码,你还可以使用 json 参数直接传递,然后它就会被自动编码。这是 2.4.2 版的新加功能:
url = ‘https://api.github.com/some/endpoint’
payload = {‘some’: ‘data’}
r = requests.post(url, json=payload)

你可能感兴趣的:(Python)