requests模块

Posted dxnui119

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了requests模块相关的知识,希望对你有一定的参考价值。

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()
{uprivate_gists: 419, utotal_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 requests

def url_req_test(url):
    def inner():
        r = requests.get(url)
        print(访问状态:%s,响应时间:%s秒 %(r.status_code, r.elapsed.total_seconds()))
    return inner

baidu = url_req_test(https://www.baidu.com)
qq = url_req_test(https://www.qq.com)

baidu()
qq()
访问状态:200,响应时间:0.807591秒
访问状态:200,响应时间:0.108424秒

 




以上是关于requests模块的主要内容,如果未能解决你的问题,请参考以下文章

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

C#-WebForm-★内置对象简介★Request-获取请求对象Response相应请求对象Session全局变量(私有)Cookie全局变量(私有)Application全局公共变量Vi(代码片段

Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段

如何有条件地将 C 代码片段编译到我的 Perl 模块?

推进学说代码片段