Python Requests学习笔记

学习Requests的意义:
虽然Python的标准库中 urllib2 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 “HTTP for Humans”,说明使用更简洁方便。
Requests 继承了urllib2的所有特性。Requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。
requests 的底层实现其实就是 urllib3
(可以直接使用requests 做接口测试,大部分接口测试都是走的http、https协议)
#学前准备

了解http有哪几种常见的requset类型:

GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE…

GET:

请求指定的页面信息,并返回实体主体。从指定的资源请求数据。可以作为书签,可以被缓存,可以被保留在浏览器历史中。
在发送数据时,get 方法会向 url 添加数据,例如向url中添加参数,安全性较差,因为发送的数据是 url 的一部分,最好不要用于发送密码和敏感信息,数据在 url 中对所有人可见。

POST:

POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中。
POST 请求可能会导致新的资源的建立和/或已有资源的修改。
安全性高,不会被任何机制存储,每次刷新会重新提交数据,对长度无要求。数据不会显示在 url 中。

HEAD:

类似于 get 请求,只不过返回的响应中没有具体的内容,用于获取报头,一般用于探测服务器和客户端是否还在连接,作为一个探测机制。

PUT:

从客户端向服务器传送的数据取代指定的文档的内容。

DELETE:

请求服务器删除指定的页面。

OPTIONS:

允许客户端查看服务器的性能,以及服务器支持的操作。

TRACE:

回显服务器收到的请求,主要用于测试或诊断。

了解请求报文和响应报文的格式:

请求报文格式:

在这里插入图片描述

举个简单的栗子:

GET /my_view_page.php HTTP/1.1
Host: 10.0.17.183:8000
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
Accept-Encoding: gzip, deflate, sdch

响应报文格式:

在这里插入图片描述

举个简单的栗子:

HTTP/1.1 200 OK
Cache-Control: no-store, no-cache, must-revalidate
Date: Tue, 26 Jul 2021 09:32:11 GMT
Expires: Tue, 26 Jul 2021 09:32:12 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 3892
Content-Type: text/html; charset=utf-8
Last-Modified: Tue, 26 Jul 2021 09:32:12 GMT

正式开始学习Requests:

采用pip安装requsets

pip install requests

Request方法综诉:

r = requests.get()
r = requests.options()
r = requests.head()
r = requests.post()
r = requests.delete()
r = requests.put()

函数原型:(以get为例,其实上述六个参数是一致的)

def get(url, params=None, **kwargs):
    r"""Sends a GET request.

    :param url: URL for the new :class:`Request` object.
    :param params: (optional) Dictionary, list of tuples or bytes to send
        in the query string for the :class:`Request`.
    :param \*\*kwargs: Optional arguments that ``request`` takes.
    :return: :class:`Response <Response>` object
    :rtype: requests.Response
    """
	
    return request('get', url, params=params, **kwargs)

底层调用的是request方法,**kwargs为多个可选参数(常见的有headers、json、cookie、timeout)
可以在python查看内部源码实现
下面就是内部的实现,也就是将method、url、params去掉后就是**kwargs可选的所有参数
对于不同的方法这些可选参数能够选择的不同可以对HTTP中这些方法能够传入哪些参数进行了解。

def request(self, method, url,
        params=None, data=None, headers=None, cookies=None, files=None,
        auth=None, timeout=None, allow_redirects=True, proxies=None,
        hooks=None, stream=None, verify=None, cert=None, json=None):

也可以直接调用request方法

r = requests.request()

Request库的两个重要对象 Response对象和Request对象。
借用一张网图:
在这里插入图片描述

可以通过返回对Response对象r查看相关的一些信息:

r.url  				#转换后 请求的url
r.status_code		#http返回的状态码
r.headers			#http响应的头部信息
r.text				#http响应内容的字符串形式
r.encoding			#从http的headr中猜测的编码方式
r.content			#http响应内容的二进制形式
r.cookies			#访问的cookie

举一些栗子🌰

GET

无参数的例子:
import requests
#无参数栗子:
r = requests.get("https://www.baidu.com/")
print("返回码是:",r.status_code)
print("response对象的内容为:",r.text)
print("请求的url是:",r.url)

运行结果:

在这里插入图片描述

有参数的例子:
import requests
# 有参数栗子
par = {'key1':'value1','key2':'value2'}
r = requests.get("https://www.baidu.com/",params=par)
print("返回码是:",r.status_code)
print("response对象的内容为:",r.text)
print("请求的url是:",r.url)

运行结果:

在这里插入图片描述

这个时候请求的url是传递了参数的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值