python requests库翻译(一)

xiaoxiao2021-02-28  15

背景:一直想想把request的库的英文版翻译一下,更多是把一下自己不常用的方法巩固一下,最近不是特别忙就翻译的玩吧。其实网上有一篇写的特别详细的文章了,就当作自己消化理解。

直接从quickstart模块开始翻译吧

一。发送请求

首先要导入requests模块

>>> import requests

首先用get方法获取一个web页面,获取github的时间线。get方法为http协议最常用的方法,用于获取服务器资源。

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

通过requests.get()方法获取response的一个叫做r的实例,我们可以通过这个对象来获取我们想要的信息

requests库的简单的api方法,可以很简单发送post请求:

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

>>> print r.json()

{u'files': {}, u'origin': u'124.251.12.62', u'form': {u'key': u'value'}, u'url': u'http://httpbin.org/post', u'args': {}, u'headers': {u'Content-Length': u'9', u'Accept-Encoding': u'gzip, deflate', u'Host': u'httpbin.org', u'Accept': u'*/*', u'User-Agent': u'python-requests/2.13.0', u'Connection': u'close', u'Content-Type': u'application/x-www-form-urlencoded'}, u'json': None, u'data': u''}

这个简单post请求,除了域名:http://httpbin.org+接口名称post,还有参数data。通过json()方法,返回的response是一个字典类型

http的请求一共有5中类型,post,get,delete,head,option。

get:用于获取接口的内容。

post:把信息带给接口并把对应信息修改。

head:请求获取接口的响应的头部信息。

delete:删除对应传入信息。

option:获取服务器的性能。

备注:这里面我用过的就只有post和get方法

二.传入参数

在发送某种请求时,我们希望可以传入某些参数,我们可以使用params参数出入,数据类型是字典类型,比如如下:

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

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

>>> print r.json()

可以通过r.url的属性查看整个url

>>> r.url

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

三.响应内容

通过.text属性我们可以查看response的返回文本信息

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

>>> r.text

requests支持解码服务端返回的response,其中unicode类型是最常用的解码格式

调用.encoding属性我们可以查看返回的格式

>>> r.encoding

'utf-8'

该返回的格式为utf-8格式

当然也可以自定义解码格式例如:

>>> r.encoding = 'ISO-8859-1'

如果你想要改变编码格式,requests支持你使用r.encoding去设置新的编码格式,然后使用r.text去验证是否生效。一般情况下,你先使用r.context查看编码格式,然后通过r.encoding去设置新的编码,在时候用r.text去验证是否设置成功

四.二进制响应内容(这个我没看懂,直接翻译的了一下,目前测试中没有用到了)

你也可以通过二进制格式返回response的body,而不是通过文本格式

"gzip"模块可以自动传输编码方式自动解码为你

五.json格式响应内容

你可以使用json格式去解码response,然后处理对应key和value(文档response.json()返回时一个列表数据类型,但我在做接口测试时候返回都是dict类型)

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

>>> r.json()

返回的是一个list,太长了不写了,有兴趣自己试一下吧

如果json解码失败的时候,r.json()方法会抛出一个异常,例如:如果response没有内容抛出一个204,或者返回response的是一个无效json格式就会返回“Value Error:...”(这个我一般遇到就是接口返回一个页面)

六.原始的响应内容(没有用过,也不知道啥时候回用到。。。)

在个别的情况下,我们需要得到原始的响应内容,用到r.row这个属性,如果确定要这么做需要在需要请求的时候把参数stream=True设置,

正常get请求设置stram=True时:

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

>>> r.raw

<requests.packages.urllib3.response.HTTPResponse object at 0x1055bb990>

>>> r.raw.read(10)

'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03'

可以正常读出内容。

如果不设置stram=True时:

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

>>> r.raw

<requests.packages.urllib3.response.HTTPResponse object at 0x1055aff90>

>>> r.raw.read(10)

''

这种情况下就读出来

下面的另起一篇吧,写不动了,去干的别的活了,文档看多了也真是扛不住。。。。。

转载请注明原文地址: https://www.6miu.com/read-450030.html

最新回复(0)