#!/usr/bin/env python # coding: utf-8 # # 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) # ## 读取响应内容 # `Requests` 会自动解码来自服务器的内容。大多数 `unicode` 字符集都能被无缝地解码。 # In[5]: r = requests.get('https://github.com/timeline.json') print r.text # 查看文字编码: # In[6]: r.encoding # 每次改变文字编码,`text` 的内容也随之变化: # In[7]: r.encoding = "ISO-8859-1" r.text # `Requests` 中也有一个内置的 `JSON` 解码器处理 `JSON` 数据: # In[8]: r.json() # 如果 `JSON` 解码失败, `r.json` 就会抛出一个异常。 # ## 响应状态码 # In[9]: r = requests.get('http://httpbin.org/get') r.status_code # ## 响应头 # In[10]: r.headers['Content-Type']