Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。Requests 的哲学是以 PEP 20 的习语为中心开发的,所以它比 urllib 更加 Pythoner。更重要的一点是它支持 Python3 哦!

  • Beautiful is better than ugly.(美丽优于丑陋)
  • Explicit is better than implicit.(清楚优于含糊)
  • Simple is better than complex.(简单优于复杂)
  • Complex is better than complicated.(复杂优于繁琐)
  • Readability counts.(重要的是可读性)

一、安装 Requests

1.通过pip安装 pip install Requests

2.使用IDE安装比如 pycharm

二、发送请求get与传递post参数

先来一个简单的例子吧!让你了解下其威力:

 # r = requests.get(url='http://www.itwhy.org')  #最基本的get请求
# print r.status_code #返回状态
# r= requests.get(url='http://www.baidu.com/',params={'wd':'python'}) #带参数的get请求
# print r.url
# print r.text #d打印解码后的返回数据

HTTP不仅get这么简单,其他的方式也是一句话哦

 get = requests.get('http://httpbin.org') #get请求
post = requests.post('https://httpbin.org/post') #post请求
put = requests.put('http://httpbin.org/put') #put请求
delete = requests.delete('http://httpbin.org/delete') #delete 请求
head = requests.head('http://httpbin.org/get') #head请求
options = requests.options('http://httpbin.org/get') #option 请求

已上的HTTP方法,对于WEB系统一般只支持GET 和post 有一些还支持HEAD方法。

 #带参数的请求实例

 requests.get('http://www.dict.baidu.com/s',params={'wd':'python'})
requests.post('http://www.itwhy.org/wp-comments-post.php',data = {'comment':'测试post'})

post传送数据的几种方法

如果我们要发送复杂的表单,就需要POST数据了。和GET传送数据一样,想方法中额外添加一个data参数的事儿。这种方式相当于你在表单中填写这些数据,然后点击表单的提交。

1.提交表单数据

 data = {
'name':'yitian',
'age':,
'friends':['zhang3','li4'] #创建一个data表单数据
}
response = requests.post('{base_url}post',data=data) #传入一个字典data

2.提交字符串数据

有时候POST数据不是使用表单方式,而是直接在请求体中附加参数。那么我们在发送参数的时候不能向data参数添加字典了,而应该传递字符串。

 response = requests.post('{base_url}post',data=json.dumps(data)) #上面的例子就是将data字典数据转成json数据结构

json.loads() : 将json结构转变成Python数据结构

json.dumps():将Python数据结构转变成json结构

json.load(): 读取json文件转成Python数据结构

json.dump():写入json文件,读取json文件然后转成Python数据结构

3.直接提交JSON字符串当作整体传送

有些程序(例如Github的API)需要将JSON字符串直接当做请求体发送,比如说上面这种将字典转换为JSON的例子。在这种情况下,我们可以直接将字典的引用传递给方法的json参数,这样就不需要我们手动转换,requests会自动转换。

 response = requests.post('{base_url}post',json=data) 

4.上传文件

在网页上,上传头像等操作都需要上传multipart/form-data类型的表单。使用requests也非常简单。需要注意打开文件的时候最好使用二进制模式,使用文本模式打开文件可能导致requests不能正确计算文件的大小。

file = open(r'c:\Windows\System32\drivers\etc\hosts', mode='rb')  #rb是以二进制读取方式

data = {
'file': file
} response = requests.post(f'{base_url}post', files=data)
print(response.text)
requests 支持流式上传的,允许发送大的数据流或文件而无需先把他读入内存。需使用流式上传
 with open('massive-body') as f:
requests.post('http://some.url/streamed',data=f)

cookie 操作

如果要获取响应的cookies,调用cookies属性即可,它会返回一个RequestsCookieJar对象,它实现了标准库的http.cookiejar。所以我们可以按照cookiejar的
方法来使用RequestsCookieJar。比如说访问百度的时候,它会分配一个cookie,所以我们可以使用下面的代码获取Cookie。
 cookies = requests.cookies.RequestsCookieJar()
cookies.set('name','yitian')
response = requests.get('{base_urlcookies',cookies=cookies)
print response.text
 

10.Python-第三方库requests详解(二)的更多相关文章

  1. python第三方库requests详解

    Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTT ...

  2. 第三方库requests详解

    Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTT ...

  3. robot framework学习笔记之十一--第三方库requests详解

    一.安装 Requests 通过pip安装 pip install requests 或者,下载代码后安装: $ git clone git://github.com/kennethreitz/req ...

  4. python第三方库requests简单介绍

    一.发送请求与传递参数 简单demo: import requests r = requests.get(url='http://www.itwhy.org') # 最基本的GET请求 print(r ...

  5. python中常用模块详解二

    log模块的讲解 Python 使用logging模块记录日志涉及四个主要类,使用官方文档中的概括最为合适: logger提供了应用程序可以直接使用的接口API: handler将(logger创建的 ...

  6. Python爬虫入门:Urllib parse库使用详解(二)

    文字转载:https://www.jianshu.com/p/e4a9e64082ef,转载内容仅供学习 如有侵权,请联系删除 获取url参数 urlparse 和 parse_qs ParseRes ...

  7. Python-第三方库requests详解

    Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTT ...

  8. python第三方库Requests的基本使用

    Requests 是用python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTT ...

  9. Python-第三方库requests详解(附requests中文官方教程)

    转自http://blog.csdn.net/cyjs1988/article/details/73294774 Python+requests中文官方教程: http://www.python-re ...

随机推荐

  1. 20170906xlVBA_RecursionGetFiles

    Dim Dic As Object Sub GetFileName() Dim FolderPath As String Set Dic = CreateObject("Scripting. ...

  2. Vue.js示例:树型视图; 模式组件;

    树型图 本示例是一个简单的树形视图实现,它展现了组件的递归使用. mycode pen:https://codepen.io/chentianwei411/pen/KGKQxE 重点:递归是如何形成的 ...

  3. SpringCloud 将服务注册到Eureka Server上

    提供好服务生产者: 1.添加spring-cloud-starter-eureka依赖 <dependencyManagement> <dependencies> <de ...

  4. 第一讲(3)osgearth编译

    前题条件完成osg 3.0的编译Step 1 下载osgEarth 2.1.1https://github.com/gwaldron/osgearth/downloads------------> ...

  5. Python3 configparser值为多行时配置文件书写格式

    一.说明 一般而言ini配置文件键值对都是一行就完事了,但有时候我们想配置的值就是由多行组成,这里说明此时配置格式该如何书写. 二.书写格式 如果值为多行,那么在第一行外的后续所有行前加入至少一个空格 ...

  6. Oracle Linux下载教程(以Oracle Linux 6.9为例)

    一.说明 Oracle Linux是Oracle基于Redhat,针对Oracle系列软件(尤其是Oracle数据库)进行优化后的Linux发行版. 虽然Oracle Linux下载是免费的,但是并不 ...

  7. wps去除首字母自动大写

    首字母大写功能在不是进行英文编写时是个“自作聪明”的功能,我们可能会想把它关掉.

  8. 动态规划-最长单调递增子序列(dp)

    最长单调递增子序列 解题思想:动态规划 1.解法1(n2) 状态:d[i] = 长度为i+1的递增子序列的长度 状态转移方程:dp[i] = max(dp[j]+1, dp[i]); 分析:最开始把d ...

  9. 微信小程序code 换取 session_key

    code 换取 session_key ​这是一个 HTTPS 接口,开发者服务器使用登录凭证 code 获取 session_key 和 openid.其中 session_key 是对用户数据进行 ...

  10. 延时显示(类QQ头像显示)

    <!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...