Python requests怎样发送请求,常见问题有什么
Admin 2022-07-28 群英技术资讯 496 次浏览
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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要为大家介绍了Cpython的GIL解释器锁工作机制掌握示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
由于项目取数需要,要将两个不同的csv文件合并到一个文件中,所以下面这篇文章主要给大家介绍了关于利用python合并csv文件的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
Kivy 是用 Python 和 Cython 编写的,基于 OpenGL ES 2,支持各种输入设备并拥有丰富的部件库。本文将教你如何使用 Kivy 编写一款乒乓球游戏,感兴趣的可以动手试一试
Python中的元组容器序列(tuple)与列表容器序列(list)具有极大的相似之处,因此也常被称为不可变的列表。但是两者之间也有很多的差距,元组侧重于数据的展示,而列表侧重于数据的存储与操作。
pathlib 是Python内置库,Python 文档给它的定义是 Object-oriented filesystem paths(面向对象的文件系统路径)。pathlib 提供表示文件系统路径的类,其语义适用于不同的操作系统。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008