[关闭]
@Dukebf 2017-07-11T16:14:04.000000Z 字数 1253 阅读 1401

python之requests

python requests


轮子出处
Python-第三方库requests详解
中文官网
英文官网


目录


requests 的请求接口

  1. import requests
  2. requests.get('http://www.dict.baidu.com/s',params={'wd','python'})

POST发送JSON数据:

  1. import request,json
  2. r = requests.post('https://api.github.com/some/endpoint', data=json.dumps({'some': 'data'}))
  3. print(r.json())

Response 对象

r.status_code #响应状态码
r.raw #返回原始响应体,也就是 urllib 的 response 对象,使用 r.raw.read() 读取
r.content #字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩
r.text #字符串方式的响应体,会自动根据响应头部的字符编码进行解码
r.headers #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不> 存在则返回None
r.apparent_encoding #返回网站编码

将输出的编码设置为网站的编码,将下面一行放在 r.text 前,或者其他要输出字符串前,可以避免乱码

r.encoding = r.apparent_encoding

特殊方法

r.json() Requests中内置的JSON解码器
r.raise_for_status() #失败请求(非200响应)抛出异常

错误与异常

遇到网络问题(如:DNS 查询失败,拒绝连接等)时,Requests 会抛出一个 ConnectionError 异常。

如果 HTTP 请求返回了不成功的状态码,Response.raise_for_status() 会抛出一个 HTTPError 异常。

若请求超时,则抛出一个 Timeout 异常。
若请求超过了设定的最大重定向次数,则会抛出一个 TooManyRedirects 异常。
所有 Requests 显式抛出的异常都继承自 requests.exceptions.RequestException.

例子
判断网络连接错误与超时

  1. try:
  2. requests.get('https://google.com',timeout=1)
  3. except requests.exceptions.ConnectTimeout:
  4. NETWORK_STATUS = False
  5. except requests.exceptions.Timeout:
  6. REQUEST_TIMEOUT = True
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注