requests请求方式参数
Posted 进击的小猿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了requests请求方式参数相关的知识,希望对你有一定的参考价值。
get
1、无参数实例
import requests
ret = requests.get('https://github.com/timeline.json')
print(ret.text)
输出如下:
"message":"Hello there, wayfaring stranger. If you’re reading this then you probably didn’t see our blog post a couple of years back announcing that this API would go away: http://git.io/17AROg Fear not, you should be able to get what you need from the shiny new Events API instead.","documentation_url":"https://developer.github.com/v3/activity/events/#list-public-events"
2、有参数实例
payload = 'key1': 'value1', 'key2': 'value2'
ret = requests.get("http://httpbin.org/get", params=payload)
print(ret.text)
"args":
"key1": "value1",
"key2": "value2"
,
"headers":
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Connection": "close",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.18.4"
,
"origin": "39.155.185.105",
"url": "http://httpbin.org/get?key1=value1&key2=value2"
post
基本POST实例
payload = 'key1': 'value1', 'key2': 'value2'
ret = requests.post("http://httpbin.org/post", data=payload)
print(ret.text)
输出如下:
"args": ,
"data": "",
"files": ,
"form":
"key1": "value1",
"key2": "value2"
,
"headers":
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Connection": "close",
"Content-Length": "23",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.18.4"
,
"json": null,
"origin": "39.155.185.105",
"url": "http://httpbin.org/post"
发送请求头和数据实例
import json
url = 'https://api.github.com/some/endpoint'
payload = 'some': 'data'
headers = 'content-type': 'application/json'
ret1 = requests.post(url, data=json.dumps(payload), headers=headers)
ret2 = requests.post(url, data=json.dumps(payload))
print(ret1.text,ret2.text)
输出如下:
"message":"Not Found","documentation_url":"https://developer.github.com/v3" "message":"Not Found","documentation_url":"https://developer.github.com/v3"
其他请求
requests.get(url, params=None, **kwargs)
requests.post(url, data=None, json=None, **kwargs)
requests.put(url, data=None, **kwargs)
requests.head(url, **kwargs)
requests.delete(url, **kwargs)
requests.patch(url, data=None, **kwargs)
requests.options(url, **kwargs)
# 以上方法均是在此方法的基础上构建
requests.request(method, url, **kwargs)
参数
def param_method_url():
# requests.request(method='get', url='http://127.0.0.1:8000/test/')
# requests.request(method='post', url='http://127.0.0.1:8000/test/')
pass
def param_param():
# - 可以是字典
# - 可以是字符串
# - 可以是字节(ascii编码以内)
# requests.request(method='get',
# url='http://127.0.0.1:8000/test/',
# params='k1': 'v1', 'k2': '水电费')
# requests.request(method='get',
# url='http://127.0.0.1:8000/test/',
# params="k1=v1&k2=水电费&k3=v3&k3=vv3")
# requests.request(method='get',
# url='http://127.0.0.1:8000/test/',
# params=bytes("k1=v1&k2=k2&k3=v3&k3=vv3", encoding='utf8'))
# 错误
# requests.request(method='get',
# url='http://127.0.0.1:8000/test/',
# params=bytes("k1=v1&k2=水电费&k3=v3&k3=vv3", encoding='utf8'))
pass
def param_data():
# 可以是字典
# 可以是字符串
# 可以是字节
# 可以是文件对象
# requests.request(method='POST',
# url='http://127.0.0.1:8000/test/',
# data='k1': 'v1', 'k2': '水电费')
# requests.request(method='POST',
# url='http://127.0.0.1:8000/test/',
# data="k1=v1; k2=v2; k3=v3; k3=v4"
# )
# requests.request(method='POST',
# url='http://127.0.0.1:8000/test/',
# data="k1=v1;k2=v2;k3=v3;k3=v4",
# headers='Content-Type': 'application/x-www-form-urlencoded'
# )
# requests.request(method='POST',
# url='http://127.0.0.1:8000/test/',
# data=open('data_file.py', mode='r', encoding='utf-8'), # 文件内容是:k1=v1;k2=v2;k3=v3;k3=v4
# headers='Content-Type': 'application/x-www-form-urlencoded'
# )
pass
def param_json():
# 将json中对应的数据进行序列化成一个字符串,json.dumps(...)
# 然后发送到服务器端的body中,并且Content-Type是 'Content-Type': 'application/json'
requests.request(method='POST',
url='http://127.0.0.1:8000/test/',
json='k1': 'v1', 'k2': '水电费')
def param_headers():
# 发送请求头到服务器端
requests.request(method='POST',
url='http://127.0.0.1:8000/test/',
json='k1': 'v1', 'k2': '水电费',
headers='Content-Type': 'application/x-www-form-urlencoded'
)
def param_cookies():
# 发送Cookie到服务器端
requests.request(method='POST',
url='http://127.0.0.1:8000/test/',
data='k1': 'v1', 'k2': 'v2',
cookies='cook1': 'value1',
)
# 也可以使用CookieJar(字典形式就是在此基础上封装)
from http.cookiejar import CookieJar
from http.cookiejar import Cookie
obj = CookieJar()
obj.set_cookie(Cookie(version=0, name='c1', value='v1', port=None, domain='', path='/', secure=False, expires=None,
discard=True, comment=None, comment_url=None, rest='HttpOnly': None, rfc2109=False,
port_specified=False, domain_specified=False, domain_initial_dot=False, path_specified=False)
)
requests.request(method='POST',
url='http://127.0.0.1:8000/test/',
data='k1': 'v1', 'k2': 'v2',
cookies=obj)
def param_files():
# 发送文件
# file_dict =
# 'f1': open('readme', 'rb')
#
# requests.request(method='POST',
# url='http://127.0.0.1:8000/test/',
# files=file_dict)
# 发送文件,定制文件名
# file_dict =
# 'f1': ('test.txt', open('readme', 'rb'))
#
# requests.request(method='POST',
# url='http://127.0.0.1:8000/test/',
# files=file_dict)
# 发送文件,定制文件名
# file_dict =
# 'f1': ('test.txt', "hahsfaksfa9kasdjflaksdjf")
#
# requests.request(method='POST',
# url='http://127.0.0.1:8000/test/',
# files=file_dict)
# 发送文件,定制文件名
# file_dict =
# 'f1': ('test.txt', "hahsfaksfa9kasdjflaksdjf", 'application/text', 'k1': '0')
#
# requests.request(method='POST',
# url='http://127.0.0.1:8000/test/',
# files=file_dict)
pass
def param_auth():
from requests.auth import HTTPBasicAuth, HTTPDigestAuth
ret = requests.get('https://api.github.com/user', auth=HTTPBasicAuth('wupeiqi', 'sdfasdfasdf'))
print(ret.text)
# ret = requests.get('http://192.168.1.1',
# auth=HTTPBasicAuth('admin', 'admin'))
# ret.encoding = 'gbk'
# print(ret.text)
# ret = requests.get('http://httpbin.org/digest-auth/auth/user/pass', auth=HTTPDigestAuth('user', 'pass'))
# print(ret)
#
def param_timeout():
# ret = requests.get('http://google.com/', timeout=1)
# print(ret)
# ret = requests.get('http://google.com/', timeout=(5, 1))
# print(ret)
pass
def param_allow_redirects():
ret = requests.get('http://127.0.0.1:8000/test/', allow_redirects=False)
print(ret.text)
def param_proxies():
# proxies =
# "http": "61.172.249.96:80",
# "https": "http://61.185.219.126:3128",
#
# proxies = 'http://10.20.1.128': 'http://10.10.1.10:5323'
# ret = requests.get("http://www.proxy360.cn/Proxy", proxies=proxies)
# print(ret.headers)
# from requests.auth import HTTPProxyAuth
#
# proxyDict =
# 'http': '77.75.105.165',
# 'https': '77.75.105.165'
#
# auth = HTTPProxyAuth('username', 'mypassword')
#
# r = requests.get("http://www.google.com", proxies=proxyDict, auth=auth)
# print(r.text)
pass
def param_stream():
ret = requests.get('http://127.0.0.1:8000/test/', stream=True)
print(ret.content)
ret.close()
# from contextlib import closing
# with closing(requests.get('http://httpbin.org/get', stream=True)) as r:
# # 在此处理响应。
# for i in r.iter_content():
# print(i)
def requests_session():
import requests
session = requests.Session()
### 1、首先登陆任何页面,获取cookie
i1 = session.get(url="http://dig.chouti.com/help/service")
### 2、用户登陆,携带上一次的cookie,后台对cookie中的 gpsd 进行授权
i2 = session.post(
url="http://dig.chouti.com/login",
data=
'phone': "8615131255089",
'password': "xxxxxx",
'oneMonth': ""
)
i3 = session.post(
url="http://dig.chouti.com/link/vote?linksId=8589623",
)
print(i3.text)
参数示例
以上是关于requests请求方式参数的主要内容,如果未能解决你的问题,请参考以下文章