mirror of
https://github.com/apachecn/ailearning.git
synced 2026-05-12 03:27:11 +08:00
2020-10-19 21:01:31
This commit is contained in:
150
docs/da/149.md
Normal file
150
docs/da/149.md
Normal file
@@ -0,0 +1,150 @@
|
||||
# requests 模块:HTTP for Human
|
||||
|
||||
In [1]:
|
||||
|
||||
```
|
||||
import requests
|
||||
|
||||
```
|
||||
|
||||
Python 标准库中的 `urllib2` 模块提供了你所需要的大多数 `HTTP` 功能,但是它的 `API` 不是特别方便使用。
|
||||
|
||||
`requests` 模块号称 `HTTP for Human`,它可以这样使用:
|
||||
|
||||
In [2]:
|
||||
|
||||
```
|
||||
r = requests.get("http://httpbin.org/get")
|
||||
r = requests.post('http://httpbin.org/post', data = {'key':'value'})
|
||||
r = requests.put("http://httpbin.org/put")
|
||||
r = requests.delete("http://httpbin.org/delete")
|
||||
r = requests.head("http://httpbin.org/get")
|
||||
r = requests.options("http://httpbin.org/get")
|
||||
|
||||
```
|
||||
|
||||
## 传入 URL 参数
|
||||
|
||||
假如我们想访问 `httpbin.org/get?key=val`,我们可以使用 `params` 传入这些参数:
|
||||
|
||||
In [3]:
|
||||
|
||||
```
|
||||
payload = {'key1': 'value1', 'key2': 'value2'}
|
||||
r = requests.get("http://httpbin.org/get", params=payload)
|
||||
|
||||
```
|
||||
|
||||
查看 `url` :
|
||||
|
||||
In [4]:
|
||||
|
||||
```
|
||||
print(r.url)
|
||||
|
||||
```
|
||||
|
||||
```
|
||||
http://httpbin.org/get?key2=value2&key1=value1
|
||||
|
||||
```
|
||||
|
||||
## 读取响应内容
|
||||
|
||||
`Requests` 会自动解码来自服务器的内容。大多数 `unicode` 字符集都能被无缝地解码。
|
||||
|
||||
In [5]:
|
||||
|
||||
```
|
||||
r = requests.get('https://github.com/timeline.json')
|
||||
|
||||
print r.text
|
||||
|
||||
```
|
||||
|
||||
```
|
||||
{"message":"Hello there, wayfaring stranger. If you’re reading this then you probably didn’t see our blog post a couple of years back announcing that this API would go away: http://git.io/17AROg Fear not, you should be able to get what you need from the shiny new Events API instead.","documentation_url":"https://developer.github.com/v3/activity/events/#list-public-events"}
|
||||
|
||||
```
|
||||
|
||||
查看文字编码:
|
||||
|
||||
In [6]:
|
||||
|
||||
```
|
||||
r.encoding
|
||||
|
||||
```
|
||||
|
||||
Out[6]:
|
||||
|
||||
```
|
||||
'utf-8'
|
||||
```
|
||||
|
||||
每次改变文字编码,`text` 的内容也随之变化:
|
||||
|
||||
In [7]:
|
||||
|
||||
```
|
||||
r.encoding = "ISO-8859-1"
|
||||
|
||||
r.text
|
||||
|
||||
```
|
||||
|
||||
Out[7]:
|
||||
|
||||
```
|
||||
u'{"message":"Hello there, wayfaring stranger. If you\xe2\x80\x99re reading this then you probably didn\xe2\x80\x99t see our blog post a couple of years back announcing that this API would go away: http://git.io/17AROg Fear not, you should be able to get what you need from the shiny new Events API instead.","documentation_url":"https://developer.github.com/v3/activity/events/#list-public-events"}'
|
||||
```
|
||||
|
||||
`Requests` 中也有一个内置的 `JSON` 解码器处理 `JSON` 数据:
|
||||
|
||||
In [8]:
|
||||
|
||||
```
|
||||
r.json()
|
||||
|
||||
```
|
||||
|
||||
Out[8]:
|
||||
|
||||
```
|
||||
{u'documentation_url': u'https://developer.github.com/v3/activity/events/#list-public-events',
|
||||
u'message': u'Hello there, wayfaring stranger. If you\xe2\x80\x99re reading this then you probably didn\xe2\x80\x99t see our blog post a couple of years back announcing that this API would go away: http://git.io/17AROg Fear not, you should be able to get what you need from the shiny new Events API instead.'}
|
||||
```
|
||||
|
||||
如果 `JSON` 解码失败, `r.json` 就会抛出一个异常。
|
||||
|
||||
## 响应状态码
|
||||
|
||||
In [9]:
|
||||
|
||||
```
|
||||
r = requests.get('http://httpbin.org/get')
|
||||
|
||||
r.status_code
|
||||
|
||||
```
|
||||
|
||||
Out[9]:
|
||||
|
||||
```
|
||||
407
|
||||
```
|
||||
|
||||
## 响应头
|
||||
|
||||
In [10]:
|
||||
|
||||
```
|
||||
r.headers['Content-Type']
|
||||
|
||||
```
|
||||
|
||||
Out[10]:
|
||||
|
||||
```
|
||||
'text/html'
|
||||
```
|
||||
Reference in New Issue
Block a user