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参数

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

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

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

1 get = requests.get(‘http://httpbin.org‘) #get请求
2 post = requests.post(‘https://httpbin.org/post‘)  #post请求
3 put = requests.put(‘http://httpbin.org/put‘) #put请求
4 delete = requests.delete(‘http://httpbin.org/delete‘) #delete 请求
5 head = requests.head(‘http://httpbin.org/get‘) #head请求
6 options = requests.options(‘http://httpbin.org/get‘)  #option 请求

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

1 #带参数的请求实例
2
3 requests.get(‘http://www.dict.baidu.com/s‘,params={‘wd‘:‘python‘})
4 requests.post(‘http://www.itwhy.org/wp-comments-post.php‘,data = {‘comment‘:‘测试post‘})

post传送数据的几种方法

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

1.提交表单数据

1 data = {
2     ‘name‘:‘yitian‘,
3     ‘age‘:22,
4     ‘friends‘:[‘zhang3‘,‘li4‘]   #创建一个data表单数据
5 }
6 response = requests.post(‘{base_url}post‘,data=data) #传入一个字典data

2.提交字符串数据

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

1 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会自动转换。

1 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 支持流式上传的,允许发送大的数据流或文件而无需先把他读入内存。需使用流式上传
1 with open(‘massive-body‘) as f:
2     requests.post(‘http://some.url/streamed‘,data=f)

cookie 操作

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

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

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 im

python第三方库requests简单介绍

一.发送请求与传递参数 简单demo: import requests r = requests.get(url='http://www.itwhy.org') # 最基本的GET请求 print(r.status_code) # 获取返回状态 r = requests.get(url='http://dict.baidu.com/s', params={'wd':'python'}) #带参数的GET请求 print(r.url) print(r.text) #打印解码后的返回数据 1.带参数

python中常用模块详解二

log模块的讲解 1 Python 使用logging模块记录日志涉及四个主要类,使用官方文档中的概括最为合适: 2 3 logger提供了应用程序可以直接使用的接口API: 4 handler将(logger创建的)日志记录发送到合适的目的输出: 5 formatter决定日志记录的最终输出格式 6 filter提供了细度设备来决定输出哪条日志记录: 7 8 logger 9 每个程序在输出信息之前都要获得一个Logger.Logger通常对应了程序的模块名, 10 比如聊天工具的图形界面模块

Python第三方库Requests学习

1.安装 1 git clone git://github.com/kennethreitz/requests.git 2 cd requests 3 python setup.py install 2.上点威力 (GET) 1 >>> import requests 2 >>> url = 'http://dict.baidu.com/s' 3 >>> payload = {'wd':'python'} 4 >>> r = requ

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 im

[转载]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 im

11.Python-第三方库requests详解(三)

Response对象 使用requests方法后,会返回一个response对象,其存储了服务器响应的内容,如上实例中已经提到的 r.text.r.status_code--获取文本方式的响应体实例:当你访问 r.text 之时,会使用其响应的文本编码进行解码,并且你可以修改其编码让 r.text 使用自定义的编码进行解码. r = requests.get('http://www.itwhy.org') print(r.text, '\n{}\n'.format('*'*79), r.enco

python之celery使用详解(二)

前言 前面我们了解了celery的基本使用后,现在对其常用的对象和方法进行分析. Celery对象 核心的对象就是Celery了,初始化方法: class Celery(object): def __init__(self, main=None, loader=None, backend=None, amqp=None, events=None, log=None, control=None, set_as_current=True, accept_magic_kwargs=False, tas

cocoaPods第三方库使用详解

终端上安装了cocoapods后,打开终端输入下面命令: 1 cd /Users/Sivek_lin/Desktop/AFNTest/AFNTest 2 3 touch podfile 4 5 pod search afn 6 7 //该命令代码以AFN框架为例操作的,下面一步之前先打开工程目录中刚刚创建的podfile文件,添加代码信心, 8 9 pod install 安装框架(pod install --no-repo-update --verbose) $ pod install --n