一、前言:

前面我们讲解了urillib3库的使用知识。

本次我们将通过最新最标准的官方文档来学习另一个python 中非常流行的网络请求模块Requests

Requests 是用Python语言编写,优雅而简单的HTTP库,其采用的开源协议为Apache2 License,所以大家可以放心的使用哦。

浏览过urillib3的小伙伴们不知道有没有注意到,Requests内部也是采用来urillib3哦。所以大家可以想到,Requests使用起来肯定会比urillib3更简单便捷哦。

二、Requests的安装

我们直接食用pip安装即可pip3 install requests

三、搬砖历程

使用requests发起一个网络请求是非常简单的。

1、第一步,当然是要导入我们的requests模块

import requests

2、get请求

我们以创建一个请求以get的方式获取github的发布时间数据

请求后其会返回一个Respose对象,respose对象中存储了请求的结果数据。

import requests

r = requests.get('https://api.github.com/events')

print(r.status_code)

200

print(r.text)

u'[{"repository":{"open_issues":0,"url":"https://github.com/...

如上,我们可以通过status_code获取响应码,text获取响应的内容,respose还有很多属性,我们后面会继续学习

如果我们想创建其他的请求如post、put、delete

import requests

r = requests.post('http://httpbin.org/post', data = {'key':'value'})

r = requests.put('http://httpbin.org/put', data = {'key':'value'})

r = requests.delete('http://httpbin.org/delete')

是不是感觉很简单呢?其实这只是个开始哦

3、创建带参数的url请求

import requests

payload = {'key1': 'value1', 'key2': 'value2'}

r = requests.get('http://httpbin.org/get', params=payload)

print(r.url)

http://httpbin.org/get?key2=value2&key1=value1

注意事项:有一点我们要注意哦,如果我们的字典的值是None,其是不会被加入参数中的哦

import requests

payload = {'key1': 'value1', 'key2': None}

r = requests.get('http://httpbin.org/get', params=payload)

print(r.url)

http://httpbin.org/get?key1=value1

4、解码

requests本身支持无缝解码,其会根据请求的数据页面的编码进行自动解码。

我们可以打印一下之前的请求

import requests

r = r = requests.get('https://api.github.com/events')

print(r.encoding)

print(r.text)

utf-8

[{"id":"6594940555","type":"IssuesEvent","actor":{"id"...

如果我们可以直接通过设置encoding重新设置其编码。

如果更改编码,请求将在调用r.text时使用r.encoding的新值重新进行编码。

当然我们也可以通过r.content来查找编码,然后设置r.encoding这也是常用的方式

5、直接获取响应的原始数据

我们可以直接通过request.content获取byte类型的响应数据而不需要通过request.txt属性去获取

而且我们还可以通过iter_content返回byte类型数据的迭代器,直接存进文件中,一般可以采用如下的模版代码。

import requests

r = r = requests.get('https://api.github.com/events')

print(r.content)

b'[{"id":"6601500059","type":"PushEvent","actor":{"id":1468181,"login":"hk。。。。

with open('save_data.txt', 'wb') as fd:

for chunk in r.iter_content(chunk_size=128):

fd.write(chunk)

6、直接以json格式获取响应的数据

一般开发中我们用到的数据都要经过自己加工后将其转换为json格式的数据。

但是用了requests之后我们就可以省去这部分工作了。

我们获得response对象后直接调用json()方法即可

import requests

r = r = requests.get('https://api.github.com/events')

print(r.json())

[{'id': '6601503359', 'type': 'CreateEvent', 'actor': {'id': 25371315, 'login': 'Chandra0505', 'display_login': '......

7、requests获取原始的套件字响应。

我们一般不需要获取原始的套接字响应数据,但是如果你有需要的话requests也已经给我们提供有相关的api了。

我们只需要在请求时设置一个stream参数为True,然后通过r.raw即可获取原始的套接字数据,之后根据需要调用read从里面拿数据即可。

import requests

r = r = requests.get('https://api.github.com/events',stream=True);

print(r.raw)

print(r.raw.read(10))

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐