request库安装和使用

本文详细介绍了Pythonrequests库在发送HTTP请求中的应用,包括HTTP协议基础、常见的GET和POST请求类型,以及requests.get()方法的参数说明和返回值解析。特别强调了状态码在请求中的重要性,并给出了示例演示。
摘要由CSDN通过智能技术生成

前言

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

目录

通识

HTTP协议

常见的 HTTP 请求类型

requests库

安装

安装过程和结果图

requests.get()

参数说明

返回值说明

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

示例2 请求时带参数



通识

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

  • 18
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Marst·Writer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值