requests快速入门
Requests 是唯一的一个非转基因的 Python HTTP 库,人类可以安全享用。
警告:非专业使用其他 HTTP 库会导致危险的副作用,包括:安全缺陷症、冗余代码症、重新发明轮子症、啃文档症、抑郁、头疼、甚至死亡。
Requests 允许你发送纯天然,植物饲养的 HTTP/1.1 请求,无需手工劳动。
HTTP请求
requests模块针对不同的HTTP请求提供的相应的顶层方法,
包括:get
, post
, put
, delete
, head
及options
等
>>> r = requests.get("http://httpbin.org/get")
>>> r = requests.post("http://httpbin.org/post")
>>> r = requests.put("http://httpbin.org/put")
>>> r = requests.delete("http://httpbin.org/delete")
>>> r = requests.head("http://httpbin.org/get")
>>> r = requests.options("http://httpbin.org/get")
这就是官方文档中所描述的纯天然、无需手工劳动
的HTTP请求,
然后在这个基础上可以根据不同的需求添加不同的关键字参数。
传递URL参数 - params
关键字参数params
用于传递URL参数,以一个字典对象来提供键值对参数
>>> payload = {'key1': 'value1', 'key2': ['value2', 'value3'], 'key3': None}
>>> r = requests.get('http://httpbin.org/get', params=payload)
>>> print(r.url)
#http://httpbin.org/get?key1=value1&key2=value2&key2=value3
这里注意两点:
- 字典里值为
None
的键不会被添加到URL中 - 字典里值为数组的键会被拆分成多个同时添加到URL中,如上例中的key2
Post数据 - data
, json
, files
一般在发起POST请求的时候会附加上一些要传送给服务器的数据,如表单,文件等。
对于表单形式的数据,只要简单的将一个字典传递给
data
参数>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.post("http://httpbin.org/post", data=payload)
# 通过抓包可以发现发起的HTTP请求中BODY部分就是已经编码的表单数据
# key1=value1&key2=value2
注:
data
参数也可以接受一个字符串参数直接发布出去。有些服务接受JSON编码格式的数据,可以使用
json
参数>>> r = requests.post("http://httpbin.org/post", json=payload)
# 这是发送出去的HTTP请求中BODY部分就是JSON格式的字符串
# {"key1": "value1", "key2": "value2"}
若是要上传文件数据,可以使用
files
参数>>> files = {'file': open('report.xls', 'rb')}
>>> r = requests.post("http://httpbin.org/post", files=files)
自定义请求头 - headers
通过headers
参数提供的字典值自定义添加HTTP请求头信息,
如服务要求JSON数据格式,要求请求Content-Type
为application/json
headers = {'Content-Type':'application/json'}
r = requests.post(url, headers=headers, data=jsonstring)
注: 其实这个例子里的问题可以使用
json
参数来解决,
在使用json
参数时会自动在请求头中添加Content-Type: application/json
信息requests.post(url, json=jsonstring)
Cookies - cookies
要想要在发送请求时发送Cookies数据,可以使用cookies
参数,
可以使用requests.cookies.RequestCookieJar
来构建Cookies
>>> jar = requests.cookies.RequestsCookieJar()
>>> jar.set('tasty_cookie', 'yum', site='httpbin.org', path='/cookies')
>>> jar.set('gross_cookie', 'blech', site='httpbin.org', path='/elsewhere')
>>> r = requests.get('http://httpbin.org/cookies', cookies=jar)
超时时间 - timeout
在请求时指定超时时间,若超过超时时间服务器没有响应,
则会抛出requests.exceptions.Timeout
错误
HTTP响应
请求方法返回的Response
对象,可以通过响应码来确定响应状态,
并获取不同格式的响应内容(以下默认r
为Response
类型对象)
r.status_code
属性可以用来获取响应码,如:200,万恶的404等- 响应内容可以获取文本、二进制、JSON等格式:
r.text
返回unicode格式的字符串响应内容,
其内容编码可以通过r.encoding
属性来设置r.content
返回二进制格式的响应内容r.json
把响应内容当做JSON字符串来处理,解码后返回JSON对象
r.cookes
可以获取响应中要设置的cookies
requests快速入门的更多相关文章
- 转:Python requests 快速入门
迫不及待了吗?本页内容为如何入门Requests提供了很好的指引.其假设你已经安装了Requests.如果还没有, 去 安装 一节看看吧. 首先,确认一下: ·Requests 已安装 ·Reques ...
- Python Requests快速入门
迫不及待了吗?本页内容为如何入门Requests提供了很好的指引.其假设你已经安装了Requests.如果还没有, 去 安装 一节看看吧. 首先,确认一下: Requests 已安装 Requests ...
- requests 快速入门
requests的请求方式 import requests # 发送请求 r = requests.get('https://github.com/timeline.json') r = reque ...
- GitHub新手快速入门日常操作流程
GitHub新手快速入门日常操作流程 1. 注册帐号 打开https://github.com/,填写注册信息并提交. 2. 登录帐号 打开https://github.com/login,输入注册的 ...
- Nginx快速入门菜鸟笔记
Nginx快速入门-菜鸟笔记 1.编译安装nginx 编译安装nginx 必须先安装pcre库. (1)uname -a 确定环境 Linux localhost.localdomain 2.6. ...
- AngularJS快速入门指南09:SQL
我们可以将之前章节中的代码用来从数据库中读取数据. 通过PHP Server从MySQL数据库中获取数据 <div ng-app="myApp" ng-controller= ...
- Java程序员快速入门Go语言
这篇文章帮助Java程序员快速入门Go语言. 转载至 开源中国社区. http://www.oschina.net 本文将以一个有代表性的例子为开始,以此让Java程序员对Go语言有个初步认识,随后将 ...
- JAVA WEB快速入门之从编写一个基于SpringMVC框架的网站了解Maven、SpringMVC、SpringJDBC
接上篇<JAVA WEB快速入门之通过一个简单的Spring项目了解Spring的核心(AOP.IOC)>,了解了Spring的核心(AOP.IOC)后,我们再来学习与实践Maven.Sp ...
- 【Flask-RESTPlus系列】Part1:快速入门
0x00 内容概览 Flask-RESTPlus安装 快速入门 初始化 一个最简单的API示例 资源路由 端点 参数解析 数据格式化 顺序保留 完整例子 0x01 Flask-RESTPlus安装 1 ...
随机推荐
- 【Nowcoder 上海五校赛】二数(模拟)
题目描述: 我们把十进制下每一位都是偶数的数字叫做“二数”. 小埃表示自己很聪明,最近他不仅能够从小数到大:2,3,4,5....,也学会了从大数到小:100,99,98...,他想知道从一个数开始数 ...
- DevOps - 版本控制 - Git
配置 .gitignore 配置 .gitignore 配置文件用于配置不需要加入版本管理的文件,配置好该文件可以为我们的版本管理带来很大的便利. 有些时候,你必须把某些文件放到Git工作目录中,但又 ...
- 【php练习源码】
Something is wrong with the XAMPP installation :-( value[$name]=$sex; } public function getInfomatio ...
- ethereum(以太坊)(基础)--容易忽略的坑(三)
pragma solidity ^0.4.10; contract Byte{ bytes [] public T=new bytes[](3); function setLeng(uint len) ...
- JDK6 新特性
JDK6新特性目录导航: Desktop类和SystemTray类 JAXB2实现对象与XML之间的映射 StAX Compiler API 轻量级 Http Server API 插入式注解处理AP ...
- 吐血分享:QQ群霸屏技术教程2017(活跃篇)
热门词的群排名,在前期优化准备充分的情况下,活跃度不失为必杀技. 在<吐血分享:QQ群霸屏技术(初级篇)>中,我们提及到热门词的群排名,有了前面的基础,我们就可以进入深度优化,实现绝对的霸 ...
- 【php】php 生僻知识点认知
资料引用来源:http://www.runoob.com/php/php-tutorial.html 表单提交中, 变量名中的点和空格被转换成下划线.例如 <input name=" ...
- 3122 奶牛代理商 VIII(状压dp)
3122 奶牛代理商 VIII 时间限制: 3 s 空间限制: 256000 KB 题目等级 : 大师 Master 题目描述 Description 小徐是USACO中国区的奶牛代理商 ...
- L008之前课程实战模拟。
L008之前课程实战模拟. . 安装CentOS 6.5 X86_64 . 配置网络 . 用CRT连接服务器 . 更换源http://mirrors.163.com/.help/CentOS6-Bas ...
- 解决上传app store卡在正在通过iTunes Store鉴定
打开终端输入代码即可 cd ~ mv .itmstransporter/ .old_itmstransporter/ "/Applications/Xcode.app/Contents/Ap ...