Requests 是唯一的一个非转基因的 Python HTTP 库,人类可以安全享用。

警告:非专业使用其他 HTTP 库会导致危险的副作用,包括:安全缺陷症、冗余代码症、重新发明轮子症、啃文档症、抑郁、头疼、甚至死亡。

Requests 允许你发送纯天然,植物饲养的 HTTP/1.1 请求,无需手工劳动。

HTTP请求

requests模块针对不同的HTTP请求提供的相应的顶层方法,

包括:get, post, put, delete, headoptions

>>> r = requests.get("http://httpbin.org/get")
>>> r = requests.post("http://httpbin.org/post")
>>> 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")

这就是官方文档中所描述的纯天然、无需手工劳动的HTTP请求,

然后在这个基础上可以根据不同的需求添加不同的关键字参数。

传递URL参数 - params

关键字参数params用于传递URL参数,以一个字典对象来提供键值对参数

>>> payload = {'key1': 'value1', 'key2': ['value2', 'value3'], 'key3': None}

>>> r = requests.get('http://httpbin.org/get', params=payload)
>>> print(r.url)
#http://httpbin.org/get?key1=value1&key2=value2&key2=value3

这里注意两点:

  • 字典里值为None的键不会被添加到URL中
  • 字典里值为数组的键会被拆分成多个同时添加到URL中,如上例中的key2

Post数据 - data, json, files

一般在发起POST请求的时候会附加上一些要传送给服务器的数据,如表单,文件等。

  1. 对于表单形式的数据,只要简单的将一个字典传递给data参数

    >>> payload = {'key1': 'value1', 'key2': 'value2'}
    >>> r = requests.post("http://httpbin.org/post", data=payload)
    # 通过抓包可以发现发起的HTTP请求中BODY部分就是已经编码的表单数据
    # key1=value1&key2=value2

    注: data参数也可以接受一个字符串参数直接发布出去。

  2. 有些服务接受JSON编码格式的数据,可以使用json参数

    >>> r = requests.post("http://httpbin.org/post", json=payload)
    # 这是发送出去的HTTP请求中BODY部分就是JSON格式的字符串
    # {"key1": "value1", "key2": "value2"}
  3. 若是要上传文件数据,可以使用files参数

    >>> files = {'file': open('report.xls', 'rb')}
    >>> r = requests.post("http://httpbin.org/post", files=files)

自定义请求头 - headers

通过headers参数提供的字典值自定义添加HTTP请求头信息,

如服务要求JSON数据格式,要求请求Content-Typeapplication/json

headers = {'Content-Type':'application/json'}
r = requests.post(url, headers=headers, data=jsonstring)

注: 其实这个例子里的问题可以使用json参数来解决,

在使用json参数时会自动在请求头中添加Content-Type: application/json信息

requests.post(url, json=jsonstring)

Cookies - cookies

要想要在发送请求时发送Cookies数据,可以使用cookies参数,

可以使用requests.cookies.RequestCookieJar来构建Cookies

>>> jar = requests.cookies.RequestsCookieJar()
>>> jar.set('tasty_cookie', 'yum', site='httpbin.org', path='/cookies')
>>> jar.set('gross_cookie', 'blech', site='httpbin.org', path='/elsewhere')
>>> r = requests.get('http://httpbin.org/cookies', cookies=jar)

超时时间 - timeout

在请求时指定超时时间,若超过超时时间服务器没有响应,

则会抛出requests.exceptions.Timeout错误

HTTP响应

请求方法返回的Response对象,可以通过响应码来确定响应状态,

并获取不同格式的响应内容(以下默认rResponse类型对象)

  • r.status_code属性可以用来获取响应码,如:200,万恶的404等
  • 响应内容可以获取文本、二进制、JSON等格式:
    • r.text返回unicode格式的字符串响应内容,

      其内容编码可以通过r.encoding属性来设置
    • r.content返回二进制格式的响应内容
    • r.json把响应内容当做JSON字符串来处理,解码后返回JSON对象
  • r.cookes可以获取响应中要设置的cookies

requests快速入门的更多相关文章

  1. 转:Python requests 快速入门

    迫不及待了吗?本页内容为如何入门Requests提供了很好的指引.其假设你已经安装了Requests.如果还没有, 去 安装 一节看看吧. 首先,确认一下: ·Requests 已安装 ·Reques ...

  2. Python Requests快速入门

    迫不及待了吗?本页内容为如何入门Requests提供了很好的指引.其假设你已经安装了Requests.如果还没有, 去 安装 一节看看吧. 首先,确认一下: Requests 已安装 Requests ...

  3. requests 快速入门

     requests的请求方式 import requests # 发送请求 r = requests.get('https://github.com/timeline.json') r = reque ...

  4. GitHub新手快速入门日常操作流程

    GitHub新手快速入门日常操作流程 1. 注册帐号 打开https://github.com/,填写注册信息并提交. 2. 登录帐号 打开https://github.com/login,输入注册的 ...

  5. Nginx快速入门菜鸟笔记

    Nginx快速入门-菜鸟笔记   1.编译安装nginx 编译安装nginx 必须先安装pcre库. (1)uname -a 确定环境 Linux localhost.localdomain 2.6. ...

  6. AngularJS快速入门指南09:SQL

    我们可以将之前章节中的代码用来从数据库中读取数据. 通过PHP Server从MySQL数据库中获取数据 <div ng-app="myApp" ng-controller= ...

  7. Java程序员快速入门Go语言

    这篇文章帮助Java程序员快速入门Go语言. 转载至 开源中国社区. http://www.oschina.net 本文将以一个有代表性的例子为开始,以此让Java程序员对Go语言有个初步认识,随后将 ...

  8. JAVA WEB快速入门之从编写一个基于SpringMVC框架的网站了解Maven、SpringMVC、SpringJDBC

    接上篇<JAVA WEB快速入门之通过一个简单的Spring项目了解Spring的核心(AOP.IOC)>,了解了Spring的核心(AOP.IOC)后,我们再来学习与实践Maven.Sp ...

  9. 【Flask-RESTPlus系列】Part1:快速入门

    0x00 内容概览 Flask-RESTPlus安装 快速入门 初始化 一个最简单的API示例 资源路由 端点 参数解析 数据格式化 顺序保留 完整例子 0x01 Flask-RESTPlus安装 1 ...

随机推荐

  1. beep版千与千寻主题曲(转载自Ice_watermelon233)

    #include <bits/stdc++.h> #include <windows.h> #define qdo 262 #define qre 294 #define qm ...

  2. 寻找AP数

    题目背景 正整数n是无穷的,但其中有些数有神奇的性质,我们给它个名字--AP数. 题目描述 对于一个数字i是AP数的充要条件是所有比它小的数的因数个数都没有i的因数个数多.比如6的因数是1 2 3 6 ...

  3. 【TOJ 1743】集合运算(set并、交、差集)

    Description 给定两个集合A和B的所有元素,计算它们的交.并.差集. Input 输入数据有多组,第一行为数据的组数T,接下来有2T行,每组数据占2行,每行有若干个整数,第一行的所有整数构成 ...

  4. Linux中查看已安装内存与交换空间使用情况

    目录   1. free查看内存使用量   2. 查看 /proc/meminfo 文件获取物理内存信息   3. top命令获取内存用量 1. free查看内存用量命令 该命令是专门用于查看内存用量 ...

  5. 子域收集-fierce

    fierce 是使用多种技术来扫描目标主机IP地址和主机名的一个DNS服务器枚举工具.运用递归的方式来工作.它的工作原理是先通过查询本地DNS服务器来查找目标DNS服务器,然后使用目标DNS服务器来查 ...

  6. (转载)jsp的内部方法jspInit(),_jspService(),jspDestroy()

    jspInit(){}:jsp Page被初始化的时候调用该方法,并且该方法仅在初始化时执行一次,所以可以在这里进行一些初始化的参数配置等一次性工作,由作者创建jspDestroy(){}:jsp P ...

  7. Linux基础(02)、MTPutty安装和使用

    准备工具 1. MTPutty的安装包 2. Putty.exe程序 作用:远程连接操作Centos 安装MTPutty 1.根据提示,一直下一步至下图:选择putty.exe文件的位置即可. 2.选 ...

  8. javascript实现浏览器管理员工具鼠标获取Html元素 并生成 xpath

    javascript实现浏览器管理员工具鼠标获取Html元素 并生成 xpath 看看标题就被吓尿了,够长吧.让我们看看到底是个什么玩意.. 直接上图: 就是这个东东了,做为一个写爬虫的,有必要了解下 ...

  9. python2.7练习小例子(二十八)

    28):题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母.     程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母. ...

  10. 在WPF中自定义控件(1)

    原文:在WPF中自定义控件(1)    在WPF中自定义控件(1):概述                                                   周银辉一, 不一定需要自定 ...