10.Python-第三方库requests详解(二)
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详解(二)的更多相关文章
- python第三方库requests详解
Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTT ...
- 第三方库requests详解
Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTT ...
- robot framework学习笔记之十一--第三方库requests详解
一.安装 Requests 通过pip安装 pip install requests 或者,下载代码后安装: $ git clone git://github.com/kennethreitz/req ...
- python第三方库requests简单介绍
一.发送请求与传递参数 简单demo: import requests r = requests.get(url='http://www.itwhy.org') # 最基本的GET请求 print(r ...
- python中常用模块详解二
log模块的讲解 Python 使用logging模块记录日志涉及四个主要类,使用官方文档中的概括最为合适: logger提供了应用程序可以直接使用的接口API: handler将(logger创建的 ...
- Python爬虫入门:Urllib parse库使用详解(二)
文字转载:https://www.jianshu.com/p/e4a9e64082ef,转载内容仅供学习 如有侵权,请联系删除 获取url参数 urlparse 和 parse_qs ParseRes ...
- Python-第三方库requests详解
Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTT ...
- python第三方库Requests的基本使用
Requests 是用python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTT ...
- Python-第三方库requests详解(附requests中文官方教程)
转自http://blog.csdn.net/cyjs1988/article/details/73294774 Python+requests中文官方教程: http://www.python-re ...
随机推荐
- canvas绘图在手机上边缘粗糙
辛辛苦苦用canvas绘图,做好动画后,想看看效果,结果在手机上一打开,效果是有了,但是边缘特别粗糙,这怎么可以呢,有一种说法是你用canvas绘图时候在手机retain屏幕上,他把一个像素分为两个像 ...
- python基础之字符串以及切片等操作
1.字符类型 1.整型 int 2. str 字符串 3.bool 布尔值 4.list 表格,常用于大量数据的存储 用[ ]表示 5.tuple 元祖 ,不能发生改变()表示 6.dict 字 ...
- Ugly Number leetcode java
问题描述: Write a program to check whether a given number is an ugly number. Ugly numbers are positive n ...
- 【微信公众号开发】【10】JSJDK相关
前言: 1,优点:官方提供的,会调用后还算使用方便,不用费劲了解各个原生组件 缺点:使用上有限制(如:上传文件有大小限制),很容易踩坑,部分安卓手机及电脑端不支持pjax 总结:上手容易,坑很多 2, ...
- Redshift中查看database、schema、table数据大小
1. 查看当前数据库大小以及记录行数 select trim(pgdb.datname) as database, sum(b.mbytes) as mbytes, sum(a.rows) as ro ...
- NIO高性能框架-Netty
一:Netty是什么 ? Netty是目前最流行的由JBOSS提供的一个Java开源框架NIO框架,Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客 ...
- 【LeetCode】Permutation全排列
1. Next Permutation 实现C++的std::next_permutation函数,重新排列范围内的元素,返回按照 字典序 排列的下一个值较大的组合.若其已经是最大排列,则返回最小排列 ...
- Pick-up sticks
Pick-up sticks Stan has n sticks of various length. He throws them one at a time on the floor in a r ...
- iOS 强大第三方资源库
Github用法 git-recipesGit recipes in Chinese. 高质量的Git中文教程. lark怎样在Github上面贡献代码 my-git有关 git 的学习资料 giti ...
- 【转】vue项目重构技术要点和总结
vue数据更新, 视图未更新 这个问题我们经常会遇到,一般是vue数据赋值的时候,vue数据变化了,但是视图没有更新.这个不算是项目重构的技术要点,也和大家分享一下vue2.0通常的解决方案吧! 解决 ...