requests函数不是python系统自带的,需要我们通过pip安装。
requests函数包括了我们常用的http请求的所有功能,他比urllib系列简单且使用,而且适用于爬虫和接口自动化
下面我们进入主题
一、安装 pip install requests
二、基本概念1、post方法:通过 POST 发送到服务器的数据存储在 http 请求的请求主体中:
POST /test/demo_form.PHP http/1.1Host: w3school.com.cnname1=value1&name2=value2
有关 POST 请求的其他一些注释:
POST 请求不会被缓存
POST 请求不会保留在浏览器历史记录中
POST 不能被收藏为书签
POST 请求对数据长度没有要求
2、get方法查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:
/test/demo_form.PHP?name1=value1&name2=value2
有关 GET 请求的其他一些注释:
GET 请求可被缓存GET 请求保留在浏览器历史记录中GET 请求可被收藏为书签GET 请求不应在处理敏感数据时使用GET 请求有长度限制GET 请求只应当用于取回数据(不修改)3、PUT 方法PUT 用于将数据发送到服务器来创建/更新资源。
POST 和 PU T之间的区别在于 PUT 请求是幂等的(IDempotent)。也就是说,多次调用相同的 PUT 请求将始终产生相同的结果。相反,重复调用POST请求具有多次创建相同资源的副作用。
4、head 方法head 与 GET 几乎相同,但没有响应主体。
换句话说,如果 GET /users 返回用户列表,那么 head /users 将发出相同的请求,但不会返回用户列表。
head 请求对于在实际发出 GET 请求之前(例如在下载大文件或响应正文之前)检查 GET 请求将返回的内容很有用。
下面的表格比较了两种 http 方法:GET 和 POST。
GET | POST | |
---|---|---|
后退按钮/刷新 | 无害 | 数据会被重新提交(浏览器应该告知用户数据会被重新提交)。 |
书签 | 可收藏为书签 | 不可收藏为书签 |
缓存 | 能被缓存 | 不能缓存 |
编码类型 | application/x-www-form-urlencoded | application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。 |
历史 | 参数保留在浏览器历史中。 | 参数不会保存在浏览器历史中。 |
对数据长度的限制 | 是的。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。 | 无限制。 |
对数据类型的限制 | 只允许 ASCII 字符。 | 没有限制。也允许二进制数据。 |
安全性 | 与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。 在发送密码或其他敏感信息时绝不要使用 GET ! | POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。 |
可见性 | 数据在 URL 中对所有人都是可见的。 | 数据不会显示在 URL 中。 |
三、请求头
在定义header中,Content-Type有四种格式,分别为:
1. application/x-www-form-urlencoded,浏览器的原生 form 表单,举例:POST http://www.example.com http/1.1Content-Type: application/x-www-form-urlencoded;charset=utf-8Title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3
2. multipart/form-data,我们使用表单上传文件时,必须让 form 的 enctyped 等于这个值。直接来看一个请求示例POST http://www.example.com http/1.1Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA------WebKitFormBoundaryrGKCBY7qhFd3TrwAContent-disposition: form-data; name="text"Title------WebKitFormBoundaryrGKCBY7qhFd3TrwAContent-disposition: form-data; name="file"; filename="Chrome.png"Content-Type: image/pngPNG ... content of Chrome.png ...------WebKitFormBoundaryrGKCBY7qhFd3TrwA--
这个例子稍微复杂点。首先生成了一个 boundary 用于分割不同的字段,为了避免与正文内容重复,boundary 很长很复杂。然后 Content-Type 里指明了数据是以 mutipart/form-data 来编码,本次请求的 boundary 是什么内容。消息主体里按照字段个数又分为多个结构类似的部分,每部分都是以 --boundary 开始,紧接着内容描述信息,然后是回车,最后是字段具体内容(文本或二进制)。如果传输的是文件,还要包含文件名和文件类型信息。消息主体最后以 --boundary-- 标示结束。
这种方式一般用来上传文件,各大服务端语言对它也有着良好的支持。
Google 的 AngularJs 中的 AJAX 功能,默认就是提交 JsON 字符串。这个是目前最常见的,就不做说明了,例如下面这段代码:
POST http://www.example.com http/1.1Content-Type: application/Json;charset=utf-8{"Title":"test","sub":[1,2,3]}
4. text/xml,XML-RPC(XML Remote Procedure Call)。它是一种使用 http 作为传输协议,XML 作为编码方式的远程调用规范。典型的 XML-RPC 请求是这样的POST http://www.example.com http/1.1Content-Type: text/xml<!--?xml version="1.0"?--><methodcall> <methodname>examples.getStatename</methodname> <params> <param> <value><i4>41</i4></value> </params></methodcall>
XML-RPC 协议简单、功能够用,各种语言的实现都有。它的使用也很广泛,如 wordpress 的 XML-RPC API,搜索引擎的 Ping 服务等等。JavaScript 中,也有现成的库支持以这种方式进行数据交互,能很好的支持已有的 XML-RPC 服务。不过,我个人觉得 XML 结构还是过于臃肿,一般场景用 JsON 会更灵活方便。
总结以上是内存溢出为你收集整理的python requests最全 *** 作手册,请求头和请求方法详解,有了这一篇面试就够了全部内容,希望文章能够帮你解决python requests最全 *** 作手册,请求头和请求方法详解,有了这一篇面试就够了所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)