python requests用法总结
本文全部来源于官方文档 http://docs.python-requests.org/en/master/
1、安装
Requests 是一个第三方 Python 模块,其官网的介绍如下:
Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用。
警告:非专业使用其他 HTTP 库会导致危险的副作用,包括:安全缺陷症、冗余代码症、重新发明轮子症、啃文档症、抑郁、头疼、甚至死亡。
requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到。可以说,Requests 完全满足如今网络的需求
第三方模块并不是默认的模块,意味着你需要安装它,我们使用 pip3 安装它。
首先要安装 pip3: $ sudo apt-get update $ sudo apt-get install python3-pip安装方式一般采用$ pip install requests。 如果在终端中需要使用代理:pip --proxy http://代理ip:端口 install requests
方法2:通过源码安装
先通过 git 克隆源码库: git clone git://github.com/kennethreitz/requests.git 或者直接到 github 网页上下载源码压缩包 接着进入到 requests 目录中执行以下命令: python setup.py install
2、获取响应状态
>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass')) >>> r.status_code 200 >>> r.headers['content-type'] 'application/json; charset=utf8' >>> r.encoding 'utf-8' >>> r.text u'{"type":"User"...' >>> r.json() {u'private_gists': 419, u'total_private_repos': 77, ...}
3、获取响应时间
获取elapsed不同的返回值 import requests r = requests.get("https://baidu.com") print(r.elapsed) print(r.elapsed.total_seconds()) print(r.elapsed.microseconds) print(r.elapsed.seconds) print(r.elapsed.days) print(r.elapsed.max) print(r.elapsed.min) print(r.elapsed.resolution)
elapsed里面几个方法介绍
- total_seconds 总时长,单位秒
- days 以天为单位
- microseconds (>= 0 and less than 1 second) 获取微秒部分,大于0小于1秒
- seconds Number of seconds (>= 0 and less than 1 day) 秒,大于0小于1天
- max = datetime.timedelta(999999999, 86399, 999999) 最大时间
- min = datetime.timedelta(-999999999) 最小时间
- resolution = datetime.timedelta(0, 0, 1) 最小时间单位
4、timeout超时
1.如果一个请求响应时间比较长,不能一直等着,可以设置一个超时时间,让它抛出异常
2.如下请求,设置超时为1s,那么就会抛出这个异常:requests.exceptions.ConnectTimeout: HTTPConnectionPool
import requests r = requests.get("http://cn.python-requests.org/zh_CN/latest/", timeout=1) print(r.elapsed) print(r.elapsed.total_seconds()) print(r.elapsed.microseconds)
5、例子
import requestsdef url_req_test(url):def inner():r = requests.get(url)print('访问状态:%s,响应时间:%s秒' %(r.status_code, r.elapsed.total_seconds()))return innerbaidu = url_req_test('https://www.baidu.com') qq = url_req_test('https://www.qq.com')baidu() qq() 访问状态:200,响应时间:0.807591秒 访问状态:200,响应时间:0.108424秒