翻译出处:http://docs.python-requests.org/en/latest/user/quickstart/
是不是很好奇啊?哈哈,想自己操刀实干是吧?既然你迫不及待,现在我们就开始吧。这篇文章将介绍怎么去使用requests库。
首先:(毫无疑问,你要用人家,肯定得先安装啦)你得先安装好requests库。
安装的链接地址可以看这里:http://docs.python-requests.org/en/latest/user/install/#install
其次:确保你安装的requests库是最新版本。
下面,我们来用一些例子来熟悉一下requests库吧!
一、
首先:引入requests库
>>> import requests
现在,我们尝试用get请求获取github的一个网页,返回的是一个response对象
>>> r = requests.get('https://api.github.com/events')
我们就可以通过response对象r来获取我们需要的所有信息。
requests库提供的API对于各种形式的HTTP请求都是这样显而易见,下面是一个post请求的例子。
>>> r = requests.post('http://httpbin.org/post', data = {'key':'value'})
是不是很酷啊?哈哈。除了get、post请求外,其它类型的HTTP请求又是怎样的呢?其实,你已经猜对了,其它请求也是这样滴简单易用。
>>> r = requests.put('http://httpbin.org/put', data = {'key':'value'}) >>> r = requests.delete('http://httpbin.org/delete') >>> r = requests.head('http://httpbin.org/get') >>> r = requests.options('http://httpbin.org/get')
现在你看到的仅仅是requests库能做的一个小开始而已啦!人家用途还有好多呢!
二、
如果我们有一些要求呢?比如说,想在请求链接的时候带一些参数呢?没问题,python都想到了。刚才的基础上,我们来看一下怎么在url中实现传参。
比如说,如果你想在 httpbin.org/get请求中传递这两个参数:key1=value1 和
key2=value2
,你可以这样用:
>>> payload = {'key1': 'value1', 'key2': 'value2'} >>> r = requests.get('http://httpbin.org/get', params=payload)
(其实就是你可以把你想传递的参数放在payload这个变量里面,等一下请求的时候放在params属性中带过去就ok了)
我们可以通过打印出来看一下请求的url长啥样子。
>>> print(r.url) http://httpbin.org/get?key2=value2&key1=value1
(是不是很熟悉啊?和平时我们在项目看到的是一样的)
当然,传递的参数值也可以是list列表的形式,下面演示一下:
>>> payload = {'key1': 'value1', 'key2': ['value2', 'value3']} >>> r = requests.get('http://httpbin.org/get', params=payload) >>> print(r.url) http://httpbin.org/get?key1=value1&key2=value2&key2=value3
三、关于响应内容
我们可以获取到响应的内容,下面还是通过刚才github那个例子做一下介绍。
>>> import requests >>> r = requests.get('https://api.github.com/events') >>> r.text u'[{"repository":{"open_issues":0,"url":"https://github.com/...
requests库会自动的将内容进行编码,requests库可以将大部分的unicode字符集进行编码,是不是很牛逼?
当你使用requests发送一个请求的时候,requests库会根据HTTP的headers预估一下返回的编码格式,当你使用r.text的时候才真正用上这个编码格式。你可以用r.encoding属性来知晓requests库使用的编码,如果想用其它编码格式,还可以将其变成你想要的编码。具体做法如下:
>>> r.encoding 'utf-8' >>> r.encoding = 'ISO-8859-1'当你改变了编码格式后,无论什么时候你使用r.text,它都会使用这个编码了。
你可能在某些应用特殊逻辑的场合需要知道内容的编码,举个例子:HTML和XML可以指定自己body中的编码形式。像这种场景,你可以使用r.content来获取编码形式然后r.encoding设置编码,这时,你就需要用r.text来获取正确的编码。
先翻译一部分,作为自己学习的一小部分,改天有时间再接着完成。希望接下来可以做得更好。