设为首页 加入收藏

TOP

python requests 最牛攻略(一)
2023-07-25 21:24:06 】 浏览:86
Tags:python requests 牛攻略

Requests 是一个 Python 的一个第三方库,通过发送 HTTP 请求获取响应数据,一般应用于编写网络爬虫和接口测试等。

相比 urllib 库,它语法简单,更容易上手。

官方中文文档地址:Requests: 让 HTTP 服务人类

离线文档下载地址:Requests document download


安装 Reuqests

pip install requests

HTTP 简介

在使用 requests 模拟发送网络请求之前,先来简单学习一下HTTP和常见的请求方式。

什么是 HTTP

HTTP(HyperText Transfer Protocol ,超文本传输协议)是一个简单的请求/响应协议。即一个客户端与服务器建立连接后,向服务器发送一个请求;服务器接到请求后,给予相应的响应信息。

HTTP工作原理

1.客户端与服务器端建立连接

2.客户端向服务器端发起请求

3.服务器接受请求,并根据请求返回相应的内容

4.客服端与服务器端连接关闭

客户端和服务器端之间的HTTP连接是一种一次性连接,它限制每次连接只处理一个请求,当服务器返回本次请求的应答后便立即关闭,下次请求再重新建立连接。这样做的好处就是让服务器不会处于一个一直等待的状态,及时释放连接可极大提高服务器的执行效率。

HTTP是一种无状态协议,意思就是服务器不保留与客户端连接时的任何状态。这减轻了服务器的记忆负担,从而保持较快的响应速度。

HTTP的9种请求方法

每种请求方式规定了客户端和服务器端之间不同的信息交换方式。

请求方法 描述
GET 请求指定的页面信息,并返回实体主体。
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立或已有资源的修改。
HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
PUT 从客户端向服务器传送数据取代指定的文档的内容。
PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新
DELETE 请求服务器删除指定的页面
OPTIONS 允许客户端查看服务器的性能
TRACE 回显服务器收到的请求,主要用于测试或诊断
CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器

请求方法GET和POST的区别:

  • GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中
  • GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制
  • GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
  • GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码

HTTP状态码

状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:

分类 分类描述
1** 指示信息--服务器收到请求,需要请求者继续执行操作
2** 成功--操作被成功接收并处理
3** 重定向--需要进一步的操作以完成请求
4** 客户端错误--请求包含语法错误或无法完成请求
5** 服务器错误--服务器在处理请求的过程中发生了错误

常见的状态码:

状态码 含义
200 OK 客户端请求成功
400 Bad Request 客户端请求有语法错误,不能被服务器理解
401 Unauthorized 请求未经授权,这个状态码必须和 WWW-Authenticate 报头域一起使用
403 Forbidden 服务器收到请求,但是拒绝服务
404 Not Found 请求资源不存在,eg:输入了错误的URL
500 Internal Server Error 服务器发生不可预期的错误
503 Server Unavailable 服务器当掐你不能处理客户端的请求,一段时间后可能恢复

本节参考链接:

https://www.cnblogs.com/qdhxhz/p/8468913.html

https://blog.csdn.net/qq_40100414/article/details/120122782

如果你想学习关于 HTTP 的更多知识,可以关注公众号[愿泽君],输入"python requests"获取高清电子书和本文 markdown 笔记。


requests 快速上手

requests 发起请求的步骤

使用 requests 的流程大致可以分为以下三步:

graph LR id1(填写method url params等参数)-->id2(发起请求)-->id3(查看响应结果)

requests 发起请求的两种方式

使用 requests 发起请求有两种方式,以发起post请求为例:

import requests

# 方式一:
r = requests.request("post","https://www.baidu.com")
print(r.text)

# 方式二:
r = requests.post("https://www.baidu.com")
print(r.text)

requests.request(method, url, ...)的 request 是 requests 封装好根据 method 传参的不同而调用对应的请求方法。method 参数的值可以是 get/post/put/delete/head/patch/options 等,对应我们上一节的 HTTP 请求方法。上面的示例代码中方式一和方式二达到的效果都是一样的,但是推荐使用方式一,因为在后面的接口自动化测试中便于参数化,如下:

import requests

method = "get"
url = "https://www.baidu.com"

r = requests.request(method=method, url=url)
print(r.text)

请求参数

requests 发起请求时,支持传递的参数列表:

  • method:请求的类型,格式为字符串。值可以是 get\post\put\delete\files\head\patch\options
  • url:请求的接口地址,格式为字符
首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇django的auth模块学习 下一篇04-数据类型转换

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目