Python requests怎样发送请求,常见问题有什么
Admin 2022-07-28 群英技术资讯 1263 次浏览
这篇文章给大家分享的是“Python requests怎样发送请求,常见问题有什么”,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下吧。request的说法网上有很多,简单来说就是就是python里的很强大的类库,可以帮助你发很多的网络请求,比如get,post,put,delete等等,这里最常见的应该就是get和post
$ pip install requests $ easy_install requests
(1)参数直接跟在url后面,即url的“ ?”后面,以key=value&key=value的形式
(2)由于get的参数是暴露在外面的,所以一般不传什么敏感信息,经常用于查询等操作
(3)由于参数是跟在url后面的,所以上传的数据量不大
(1)参数可以写在url后面,也可以写在body里面
(2)用body上传请求数据,上传的数据量比get大
(3)由于写在body体里,相对安全
post正文格式
(1)form表单 html提交数据的默认格式
Content-Type: application/x-www-form-urlencoded
例如: username=admin&password123
(2) multipart-form-data . 复合表单 可转数据+文件
(3)纯文本格式 raw ,最常见的 json . xml html js
Content-Type:application/json . text/xml . text/html
(4) binary . 二进制格式:只能上传一个文件
1、requests发送get请求
url = "http://www.search:9001/search/"
param = {"key":"你好"}
res = requests.get(url=url, params=params)
2、request发送post请求 (body是json格式,如果还带cookie)
headers = {'Content-Type': 'application/json'} #必须有
url = "http://www.search:9001/search/"
data= {"key":"你好"}
cookies = {"uid":"1"}
res = requests.post(url=url, headers=headers, data=data, cookies=cookies)
3、 request发送post请求 (body是urlencoded格式)
url = "http://www.search:9001/search/"
data= {"key":"你好"}
res = requests.post(url=url, headers=headers)
4、 request上传文件
def post_file_request(url, file_path):
if os.path.exists(file_path):
if url not in [None, ""]:
if url.startswith("http") or url.startswith("https"):
files = {'file': open(file_path, 'rb')}
res = requests.post(url, files=files, data=data)
return {"code": 0, "res": res}
else:
return {"code": 1, "res": "url格式不正确"}
else:
return {"code": 1, "res": "url不能为空"}
else:
return {"code": 1, "res": "文件路径不存在"}
request发送请求后,会返回一个response,response里有好多信息,我进行了一下封装,基本如下
@staticmethod
def get_response_text(response):
if response not in [None, ""]:
if isinstance(response, requests.models.Response):
return {"code": 0, "res": response.text.encode('utf-8').decode('unicode_escape')} #这种方式可以将url编码转成中文,返回响应文本
else:
return {"code": 1, "res": "response不合法"}
else:
return {"code": 1, "res": "response对像不能为空"}
@staticmethod
def get_response_status_code(response):
if response not in [None, ""]:
if isinstance(response, requests.models.Response):
return {"code": 0, "res": response.status_code} #返回响应状态吗
else:
return {"code": 1, "res": "response不合法"}
else:
return {"code": 1, "res": "response对像不能为空"}
@staticmethod
def get_response_cookies(response):
if response not in [None, ""]:
if isinstance(response, requests.models.Response):
return {"code": 0, "res": response.cookies} #返回cookies
else:
return {"code": 1, "res": "response不合法"}
else:
return {"code": 1, "res": "response对像不能为空"}
@staticmethod
def get_response_headers(response):
if response not in [None, ""]:
if isinstance(response, requests.models.Response):
return {"code": 0, "res": response.headers} #返回headers
else:
return {"code": 1, "res": "response不合法"}
else:
return {"code": 1, "res": "response对像不能为空"}
@staticmethod
def get_response_encoding(response):
if response not in [None, ""]:
if isinstance(response, requests.models.Response):
return {"code": 0, "res": response.encoding} #返回编码格式
else:
return {"code": 1, "res": "response不合法"}
else:
return {"code": 1, "res": "response对像不能为空"}
获取cookie
# -*- coding:utf-8 -*-
#获取cookie
import requests
import json
url = "https://www.baidu.com/"
r = requests.get(url)
#将RequestsCookieJar转换成字典
c = requests.utils.dict_from_cookiejar(r.cookies)
print(r.cookies)
print(c)
for a in r.cookies:
print(a.name,a.value)
>> 控制台输出:
<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>
{'BDORZ': '27315'}
BDORZ 27315
发送Cookie
# -*- coding:utf-8 -*-
#发送cookie到服务器
import requests
import json
host = "*****"
endpoint = "cookies"
url = ''.join([host,endpoint])
#方法一:简单发送
# cookies = {"aaa":"bbb"}
# r = requests.get(url,cookies=cookies)
# print r.text
#方法二:复杂发送
s = requests.session()
c = requests.cookies.RequestsCookieJar()
c.set('c-name','c-value',path='/xxx/uuu',domain='.test.com')
s.cookies.update(c)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章给大家分享的是有关opencv图形绘制的内容,opencv是一个强大的图像处理和计算机视觉库,我们使用python opencv可以绘制圆形,矩形,线段等多种常用图形。下面我们就一起来看看怎么实现opencv图形绘制吧。
django分页器怎么样使用?django自带的分页器是比较实用的,但是很多新手可能不太了解django分页器用法,下面小编就给大家简单的介绍一下django是实现分页以及分页器的用法,感兴趣的朋友就继续往下看吧。
这篇文章介绍了Python中的基本数据类型,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
这篇文章给大家分享的是Python的flask框架中转换器的使用,下文介绍了默认转换器和自定义转换器的使用,对大家会有一定的参考价值,有需要的朋友可以了解看看,接下来就跟随小编一起学习一下吧。
python中如何实现用return返回多个值?return语句可以返回多个值,以逗号分隔,实际返回的是一个tuple。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008