request库安装和使用

前言

        requests 库是 Python 中用于发送 HTTP 请求的一个非常流行的库,它简单易用,广泛应用于各种场景。主要用于爬虫和Web 服务的测试.前者是对外进行数据的收集,后者就是服务的性能.


通识

requests库用于实现HTTP请求.那我们最好了解一下HTTP协议以及请求类型.

HTTP协议

一种用于传输超文本的应用层协议,是Web上数据交换的基础。

HTTP使用TCP作为其传输层协议,通常在TCP的80端口进行通信。

  1. 无连接:HTTP协议是无连接的,即每次请求都是独立的,服务器在处理完客户端的请求后立即断开连接。这样也就意味着服务器无法保留之前的请求状态,每个请求都是相互独立的。

  2. 无状态:HTTP协议是无状态的,即每次请求之间没有关联,服务器不会保存客户端的状态信息。因此,每次请求需要携带足够的信息来帮助服务器理解客户端的请求。

  3. 基于请求-响应模型:HTTP协议是基于请求-响应模型的,客户端发送一个请求给服务器,服务器处理请求并返回一个响应给客户端。

  4. 支持多种请求方法:HTTP定义了多种请求方法,如GET、POST、PUT、DELETE等,用于指定对资源的不同操作。

  5. URI(Uniform Resource Identifier):HTTP使用URI来唯一标识和定位资源,包括URL和URN。

  6. 报文格式:HTTP的通信内容由请求报文和响应报文组成,这些报文中包含了头部和消息体,头部包含了与请求或响应相关的信息,消息体包含实际的数据。

  7. 状态码:HTTP使用状态码来表示请求的处理结果,常见的状态码有200(成功)、404(未找到)、500(服务器内部错误)等。

常见的 HTTP 请求类型

  1. GET:用于请求指定的资源,只请求获取数据,不对服务器上的资源做任何修改。通常用于获取网页、图片、文件等。

  2. POST:用于向服务器提交数据,常用于提交表单数据、上传文件等,可以对服务器上的资源进行添加、修改或处理。

  3. PUT:用于向服务器上传新的内容,通常用于更新资源或新建资源。

  4. DELETE:用于请求服务器删除指定的资源。

  5. HEAD:类似于 GET 请求,但是服务器只返回头部信息,不返回实际内容,用于获取资源的元信息而不传输实体主体。

  6. OPTIONS:用于获取目的资源所支持的通信选项,常用于跨域请求时进行预检请求。

  7. PATCH:用于对资源进行部分修改,类似于 PUT 请求,但是用于更新部分资源而不是整个资源。

实际上,爬虫经常用到的请求类型为GET方法(绝大多数情况);

Web 服务测试则是GET方法和POST方法.

接下来主要介绍GET方法和POST方法的说明和应用.


requests

安装

安装过程和结果图

安装requests库过程中,会将依赖库(urllib3等库)也一起进行安装.

注:httpbin.org 这个网站能测试 HTTP 请求和响应的各种信息,比如 cookie、ip、headers 和登录验证等,且支持 GET、POST 等多种方法,对 web 开发和测试很有帮助。

requests.get()

参数说明
  • url (必需):类型:字符串                                                                                                描述:请求的目标 URL 地址。
  • params (可选):类型:字典、列表元组对或其他可迭代对象
    描述:URL 查询字符串参数,键值对形式附加到 URL 末尾
  • headers (可选)  类型:字典
    描述:HTTP 请求头信息,用以提供客户端和服务器之间额外的信息,如用户代理、接受类型等。
  • proxies (可选):类型:字典
    描述:设置访问目标 URL 时使用的代理服务器。键应为 'http', 'https' 等协议名,值为代理服务器地址与端口。
  • verify (可选):类型:布尔值或路径字符串
    描述:控制 SSL 认证是否开启。默认情况下,对于 HTTPS 请求,会验证服务器证书的有效性。如果设置为 False,将禁用 SSL 验证;若指定一个 CA_BUNDLE 文件路径,则使用该证书进行验证。
  • timeout (可选):类型:整数/浮点数(秒)或 tuple(连接超时, 读取超时)
    描述:设置请求的超时时间。如果不设置,系统默认会有一个超时限制。可以单独设定连接超时和读取响应内容的超时时间。
  • cookies (可选):类型:字典或 CookieJar 对象
    描述:直接向服务器发送 cookies。

注:请求时,url是一定要提供的.部分网站反爬,需要设置header参数(浏览器标识信息),来达到一定的伪装.

返回值说明

requests.get() 方法在发送一个 HTTP GET 请求后,会返回一个 Response 对象。

这个对象包含了从服务器获取的所有相关信息

主要属性和方法如下

  • response.status_code:类型:整数

       描述:HTTP 状态码,如 200 表示请求成功,404 表示未找到资源等。

  • response.text:类型:字符串

       描述:以文本(str)形式返回服务器响应的内容,默认编码根据 Content-Type 头部确定,如果没有指定,则按照 chardet 库自动检测的编码来解码。

  • response.content:类型:字节串 (bytes)

       描述:以二进制形式返回服务器响应的数据。

  • response.json():类型:Python 字典或列表(若响应内容是 JSON 格式)

       描述:将服务器响应的内容解析为 Python 数据结构(如果响应内容可以被 json 模块解析的话)。

  • response.headers:类型:字典

       描述:包含服务器返回的所有头部信息。

  • response.cookies:类型:RequestsCookieJar 对象

       描述:服务器返回的 cookie 信息。

  • response.url:类型:字符串

       描述:最终用于请求的实际 URL,可能会由于重定向而与初始请求的 URL 不同。

  • response.history:类型:Response 对象列表

       描述:如果请求过程中发生了重定向,此属性会记录所有中间的重定向响应。

  • 其他属性和方法:

       .elapsed(请求耗时)

       .encoding(响应内容的字符编码)

       .raise_for_status()(如果状态码不是 200 系列,抛出异常)等等。

 示例1 请求时注意状态码!

         响应状态码 status_code很重要,反馈是200,表示成功访问.

使用这个库时,一定要注意状态码是否为200,再进行接下去的其它动作.比如状态码为403时,说明被禁止访问,需要添加请求头等方式来伪装一下.

import requests
r = requests.get('https://www.baidu.com/')
print(r.status_code) # 200
示例2 请求时带参数

下面介绍参数传递的两种方法,效果是一样的.

①下面示例说明,请求时可以如何使用params参数进行参数传递

payload = {'key1': 'value1', 'key2': ['value2', 'value3']}
r = requests.get('http://httpbin.org/get', params=payload)
print(r.text)
print(r.url)

②在url后面+?,参数用key=value的方式添加,多个参数用&来分隔.

格式为url?key1=value1&key2=value2

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("http://httpbin.org/get?key1=value1&key2=value2")
print(r.text)   # 获取文本
print(r.url)    # URL

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/538035.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

免费 Copilot 用户可以访问 OpenAI 的 GPT-4 Turbo;面向 3D 虚拟环境的多面手 AI 代理

🦉 AI新闻 🚀 免费 Copilot 用户可以访问 OpenAI 的 GPT-4 Turbo 摘要:微软宣布免费版Copilot已升级到GPT-4 Turbo模型,所有用户都可以免费使用。此外,Copilot Pro新增了GPT Builder工具,订阅者可创建自定…

vi 显示行号 显示色彩

首先进入当前用户目录下的.vimrc文件/.virc文件(具体要看操作系统) vi ~/.virc 显示行号 set number 显示色彩 highlight LineNr guifgred 效果

如何打开EDI文件?

使用EDI系统传输文件的过程中,用户可能会遇到这样的问题:如何打开EDI文件?电脑不在身边如何查看EDI文件?EDI文件未按照标准格式呈现如何梳理?为了解决上述问题,方便用户查看文件,知行之桥EDI系统…

如何在数据库中存储小数:FLOAT、DECIMAL还是BIGINT?

前言 这里还是用前面的例子: 在线机票订票系统的数据表设计。此时已经完成了大部分字段的设计,可能如下: CREATE TABLE flights ( flight_id INT AUTO_INCREMENT PRIMARY KEY, flight_number VARCHAR(10), departure_airport_code VARCHAR(3), arrival_air…

SAT和SMT介绍及求解器使用

一、SAT 1、介绍 (1)定义 SAT即命题逻辑公式的可满足性问题/布尔可满足性问题。即给定一个与或非和变量组成的命题公式,判断是否存在一些结果使得这个公式成立 它是第一个被确认为NP完全的问题。 输入:析取范式(C…

Three 材质纹理 (总结三)

THREE.MeshLambertMaterial(网格 Lambert 材质) 该材质使用基于非物理的Lambertian模型来计算反射率。可以用来创建暗淡的并不光亮的表面,该材质非常易用,而且会与场景中的光源产生反应。 MeshLambertMaterial属性 # .color : …

深度学习技巧总结

1、监控GPU使用情况 pip install nvitopnvitop -m fullhttps://zhuanlan.zhihu.com/p/577533593 2、本地拉取服务器上tensorboard数据并进行可视化显示 https://blog.csdn.net/Thebest_jack/article/details/125609849 3、服务器打不开pycharm软件 这个是已经有一个软件在运…

用Robotframework+selenium 进行webui页面自动化测试

Robotframework其实就是一个自动化的框架,想要进行什么样的自动化测试,就需要在这框架上添加相应的库文件,而用于webui页面自动化测试的就是selenium库. ​ 关于robotframework框架的搭建我这里就不说了,今天就给大家根据一个登录…

Dynamic Wallpaper v17.4 mac版 动态视频壁纸 兼容 M1/M2

Dynamic Wallpaper Engine 是一款适用于 Mac 电脑的视频动态壁纸, 告别单调的静态壁纸,拥抱活泼的动态壁纸。内置在线视频素材库,一键下载应用,也可导入本地视频,同时可以将视频设置为您的电脑屏保。 应用介绍 Dynam…

free pascal 调用 C#程序读 Freeplane.mm文件,生成测试用例.csv文件

C# 请参阅:C# 用 System.Xml 读 Freeplane.mm文件,生成测试用例.csv文件 Freeplane 是一款基于 Java 的开源软件,继承 Freemind 的思维导图工具软件,它扩展了知识管理功能,在 Freemind 上增加了一些额外的功能&#x…

机界先锋:Figure 01实现全面沟通与AGI通用人工智能的征途

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

Python小设计

1. 五个PPT上的界面打印【print、input函数】 (1)英雄商城登陆界面 print(英雄联盟商城登录界面 ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~1. 用户登录2. 新用户注册3. 退出系统 ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~…