学校的网站怎么做的/淘宝指数官网入口

学校的网站怎么做的,淘宝指数官网入口,网站上的淘客组件是怎样做的,运营推广培训课程文章目录 前言Requests库是什么为什么要用Requests库进行接口测试安装Requests库Requests库使用发送GET请求发送带查询参数的GET请求响应内容格式添加请求头信息发送一个POST请求查看响应内容断言请求超时Cookie与Session模拟登录 参考目录 前言 阅读本文前请注意最后编辑时间…

文章目录

  • 前言
  • Requests库是什么
  • 为什么要用Requests库进行接口测试
  • 安装Requests库
  • Requests库使用
    • 发送GET请求
    • 发送带查询参数的GET请求
    • 响应内容格式
    • 添加请求头信息
    • 发送一个POST请求
    • 查看响应内容
    • 断言
    • 请求超时
    • Cookie与Session模拟登录
  • 参考目录


前言

阅读本文前请注意最后编辑时间,文章内容可能与目前最新的技术发展情况相去甚远。欢迎各位评论与私信,指出错误或是进行交流等。


本文仅对Requests库做了简单的介绍,具体使用和更多内容请查看官网文档,如果还有具体的使用问题可查询更多其他资料,也欢迎在评论区留言。

Requests库是什么

Requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到,Requests官方中文文档

为什么要用Requests库进行接口测试

之前所学的Postman和Jmeter工具只需要通过点击即可进行接口测试,操作简单方便,结果直观。但相比于代码实现仍有一定的缺点:

  • 工具读取测试数据不灵活(无法直接读取或存储Json格式数据)
  • 不方便测试加密数据
  • 编写复杂的业务逻辑与复杂断言脚本较为麻烦

安装Requests库

在安装了python的基础上(python一般会带有pip包),在命令提示符(CMD)中输入即可。

$ pip install requests
获得源码
如果想要获取Requests的源代码,可以从github上的公共版本库获取到代码。
git clone git://github.com/kennethreitz/requests.git

Requests库使用

发送GET请求

#1、导入requuests包
import requests
#2、发送get请求
r = requests.get("http://www.baidu.com")
#3、打印结果
print(r)
print(r.status_code)
print(r.headers)
print(r.url)
print(r.cookies)
print(r.text)尝试获取百度网页的信息。
>>> r = requests.get("http://www.baidu.com")
返回一个名为 r 的 Response 响应对象。我们可以从这个对象中获取所有我们想要的信息。

发送带查询参数的GET请求

为 URL 的查询字符串(query string)传递某种数据。如果你是手工构建 URL,那么数据会以键值对的形式置于 URL 中,跟在一个问号的后面。例如, httpbin.org/get?key=val。 Requests 使用 params 关键字参数,以一个字符串字典来提供这些参数。举例来说,如果你想传递 key1=value1 和 key2=value2 到 httpbin.org/get ,那么你可以使用如下代码:

payload = {‘key1’: ‘value1’, ‘key2’: ‘value2’}
r = requests.get(“http://httpbin.org/get”, params=payload)
通过打印输出该 URL,你能看到 URL 已被正确编码:
print(r.url)
http://httpbin.org/get?key2=value2&key1=value1
注意字典里值为 None 的键都不会被添加到 URL 的查询字符串里。

你还可以将一个列表作为值传入:

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

响应内容格式

Requests 会自动解码来自服务器的内容。大多数 unicode 字符集都能被解码,可以使用 r.encoding 属性来改变它:

r.encoding = 'utf-8‘
如果你改变了编码,每当你访问 r.text ,Request 都将会使用 r.encoding 的新值。
比如 HTTP 和 XML 自身可以指定编码。这样的话,你应该使用 r.content 来找到编码,然后设置 r.encoding 为相应的编码。这样就能使用正确的编码解析 r.text 了。

你也能以字节的方式访问请求响应体,对于非文本请求:r.content
Requests 中也有一个内置的 JSON 解码器,助你处理 JSON 数据:r.json()
获取来自服务器的原始套接字响应:r.raw

添加请求头信息

为请求添加 HTTP 头部,传递一个 dict 给 headers 参数就可以了。

url = ‘https://api.github.com/some/endpoint’
headers = {‘user-agent’: ‘my-app/0.0.1’}
r = requests.get(url, headers=headers)

注意: 添加的header 的优先级低于某些特定的信息源,例如:
如果在 .netrc 中设置了用户认证信息,使用 headers= 设置的授权就不会生效。而如果设置了 auth= 参数,.netrc的设置就无效了。
如果被重定向到别的主机,授权 header 就会被删除。
代理授权 header 会被 URL 中提供的代理身份覆盖掉。

更进一步讲,Requests 不会基于添加 header 的具体情况改变自己的行为。只不过在最后的请求中,所有的 header 信息都会被传递进去。

发送一个POST请求

发送一些编码为表单形式的数据给服务器,只需传递一个字典给 data 参数。数据字典在发出请求时会自动编码为表单形式:

payload = {‘key1’: ‘value1’, ‘key2’: ‘value2’}
r = requests.post(“http://httpbin.org/post”, data=payload)
print(r.text)

还可以为 data 参数传入一个元组列表。在表单中多个元素使用同一 key 的时候,这种方式尤其有效:

payload = ((‘key1’, ‘value1’), (‘key1’, ‘value2’))
r = requests.post(‘http://httpbin.org/post’, data=payload)
print(r.text)

data 参数接受编码为 JSON 格式的数据,但要先将数据进行转换

import json
url = ‘https://api.github.com/some/endpoint’
payload = {‘some’: ‘data’}
r = requests.post(url, data=json.dumps(payload))

还可以使用 json 参数直接传递,然后它就会被自动编码

url = ‘https://api.github.com/some/endpoint’
payload = {‘some’: ‘data’}
r = requests.post(url, json=payload)

POST一个文件

url = ‘http://httpbin.org/post’
files = {‘file’: open(‘report.xls’, ‘rb’)}
r = requests.post(url, files=files)
关于上传文件的高级用法请参考官方文档高级用法一节。

查看响应内容

在这里插入图片描述
更多响应内容请查看官方文档

断言

接收返回的响应结果后,我们可以使用assert关键字来判断返回的状态码是否为200:
assert response.status_code == 200

可以对返回的内容进行断言。例如,我们可以使用assert关键字来判断返回的JSON中的某个字段的值是否符合预期:

assert response.json()[‘field’] == ‘value’

如果实际结果不符合预期,断言会失败,程序会抛出异常。
除了使用assert关键字,我们还可以结合unittest框架中的断言方法来进行断言处理。
首先,我们需要导入unittest库:

import unittest

例如,我们可以使用assertEqual()方法来判断两个值是否相等:

class TestAPI(unittest.TestCase):def test_response_status_code(self):response = requests.get(url)self.assertEqual(response.status_code, 200)

请求超时

为防止服务器不能及时响应,大部分发至服务器的请求都应该带着 timeout 参数。在默认情况下,除非显式指定了 timeout 值,requests 是不会自动进行超时处理的。如果没有 timeout,你的代码可能会挂起若干分钟甚至更长时间。

requests 库将一个请求超时分成了两部分:

连接超时指的是在你的客户端实现到远端机器端口的连接时(对应的是connect()_),Request 会等待的秒数。

一旦你的客户端连接到了服务器并且发送了 HTTP 请求,读取超时指的就是客户端等待服务器发送请求的时间。

如下所示:只对timeout设置了一个值
r = requests.get(‘https://github.com’, timeout=5)
这一 timeout 值将会用作 connect 和 read 二者的和。

如果要分别制定,就传入一个元组:
r = requests.get(‘https://github.com’, timeout=(3.05, 27))

Cookie与Session模拟登录

Cookie:利用headers参数,将抓包获取的 Cookie 放到 headers 参数中

   headers={"Cookie":"手动抓取的 Cookie ","User-Agent":""  }html=request.get(url=url,headers=header).text

Session:

import requests
def run():headers = {'User-Agent': 'ozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36'}data = {'username': 'xxxx','password': 'xxxx'}# 实例化 session 对象session = requests.session()# 使用session发送请求,登录网站,返回的cookie保存其中session.post('https://passport.baidu.com/center', headers=headers, data=data)# 使用由session对象请求需要登录才能访问的页面,得到信息返回 r = session.get(url, headers=headers)with open('csdn-1.html', 'w', encoding='utf-8') as f:f.write(r.content.decode())if __name__ == '__main__':run()

本文仅对Requests库做了简单的介绍,具体使用和更多内容请查看官网文档,如果还有具体的使用问题可查询更多其他资料,也欢迎在评论区留言。


参考目录

https://requests.readthedocs.io/projects/cn/zh-cn/latest/
https://www.bilibili.com/video/BV1uz411q7Pg
https://www.bilibili.com/video/BV1pT4y1A7dV
https://blog.csdn.net/sallyyellow/article/details/129878909
https://blog.csdn.net/Ghjkku/article/details/127281184

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

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

相关文章

AttributeError: module ‘backend_interagg‘ has no attribute ‘FigureCanvas‘

AttributeError: module backend_interagg has no attribute FigureCanvas 这个错误通常是由于 Matplotlib 的后端配置问题引起的。具体来说,Matplotlib 在尝试加载某个后端时,发现该后端模块中缺少必要的属性(如 FigureCanvas)&a…

iWebOffice2015 中间件如何在Chrome107及之后的高版本中加载

iWebOffice2015是江西金格科技有限公司开发的一款智能文档中间件,和一些知名OA及ERP公司曾经达成OEM合作,所以用户一度比较多,但不幸的是Chromium内核浏览器在2022年10月份发布的107版本中永久取消了对PPAPI插件的加载支持,导致使…

OpnenHarmony 开源鸿蒙北向开发——1.开发环境搭建(DevEco Studio 5.03)

我这边是基于window下对OpenHarmony开源鸿蒙进行北向开发。 一、安装DevEco Studio 1、下载 下载中心 | 华为开发者联盟-HarmonyOS开发者官网,共建鸿蒙生态 2、安装 下载完成之后进行解压 双击进行安装 按照我的步骤进行 选择安装目录,全部配置完成后…

linux(ubuntu)中Conda、CUDA安装Xinference报错ERROR: Failed to build (llama-cpp-python)

文章目录 一、常规办法二、继续三、继续四、缺少 libgomp库(最终解决)在 Conda 环境中安装 libgomp 如果符合标题情况 执行的: pip install "xinference[all]"大概率是最终解决的情况。 一、常规办法 llama-cpp-python 依赖 CMak…

OpenGL中绘制图形元素的实现(使用visual studio(C++)绘制一个矩形)

目标&#xff1a;使用OpenGL提供的函数绘制矩形、线段、三角形等基本图形元素 所需效果 实验步骤 1、配置OpenGL&#xff08;详情参见OpenGL的配置&#xff09; 2、头文件引入 #include <gl/glut.h> 3、编写方法体 1>矩形实现 //绘制矩形 void DisplayRectangl…

面试高频#LeetCode#Hot100-字母异位词分组

题号链接 49. 字母异位词分组 - 力扣&#xff08;LeetCode&#xff09; 1首先定义map集合一个String对应一个String[]集合&#xff0c;遍历字符串数组 2对其先进行拆分&#xff0c;拆分为字符数组&#xff0c;再进行排序&#xff0c;再转为字符串 3如果key值没有就创建一个字符…

超精密工件小孔几何尺寸测量:自动化解决方案

下载链接&#xff1a;&#xff08;最新版本&#xff09;超精密工件小孔几何尺寸测量&#xff1a;自动化解决方案python脚本代码&#xff0c;可直接运行&#xff0c;内包含测试数据&#xff0c;亲测好用资源-CSDN文库 在现代制造业中&#xff0c;超精密工件的质量控制至关重要&a…

游戏引擎学习第158天

回顾和今天的计划 我们在这里会实时编码一个完整的游戏&#xff0c;没有使用引擎或库&#xff0c;一切都由我们自己做所有的编程工作&#xff0c;游戏中的每一部分&#xff0c;无论需要做什么&#xff0c;我们都亲自实现&#xff0c;并展示如何完成这些任务。今天&#xff0c;…

兴达易控Profinet 转 ModbusTCP跨网段通信模块

Profinet 转 ModbusTCP/跨网段通信模块 Profinet转ModbusTCP/跨网段通信模块&#xff0c;作为现代工业自动化系统中不可或缺的重要组件&#xff0c;正日益受到广泛关注和应用。 这种模块的核心功能是将Profinet网络协议转换为Modbus TCP协议&#xff0c;实现不同网络之间的无缝…

创新技术引领软件供应链安全,助力数字中国建设

编者按 随着数字化转型的加速&#xff0c;针对软件供应链的攻击事件呈快速增长态势&#xff0c;目前已成为网络空间安全的焦点。如何将安全嵌入到软件开发到运营的全流程&#xff0c;实现防护技术的自动化、一体化、智能化&#xff0c;成为技术领域追逐的热点。 悬镜安全作为…

某大厂自动化工程师面试题

一些大厂的自动化工程师面试题汇总: 基础知识类 请解释什么是PLC(可编程逻辑控制器)?什么是PID控制?它在自动化系统中的作用是什么?请描述一下工业4.0的基本概念。编程与控制系统类 你熟悉哪些PLC编程语言?请举例说明。如何在SCADA系统中实现数据采集和监控?请解释一下…

Java 大视界 -- 基于 Java 的大数据分布式数据库架构设计与实践(125)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

cursor中使用prettier-code formatter插件方法

cursor的"扩展"中搜索"prettier-code formatter"&#xff0c;然后安装 点击cursor编辑器右上角“更多操作”&#xff0c;然后打开“配置编辑器” 按照图片进行操作&#xff0c;进入到editor在editor中&#xff0c;找“格式化“&#xff0c;把Format On Sav…

OSPF-2 邻接建立关系

上一期我们说了OSPF的邻居建立关系以及OSPF邻居关系建立中建立失败的因素以及相关实验案例 这一期我们来说说OSPF的邻接关系建立时需要交互哪些报文以及失败因素及原因和相关实验案例 一、概述 在运行了OSPF的网络当中为了交互链路状态信息和路由信息,互相之间需要建立邻接关…

什么是SEO泛目(什么是SEO站群)

SEO泛目录与站群策略&#xff1a;提升网站优化的双剑合璧 在当今竞争激烈的互联网环境中&#xff0c;SEO优化已成为企业提升网站流量和品牌曝光的重要手段。而在众多SEO策略中&#xff0c;泛目录和站群因其独特的技术优势和效果&#xff0c;逐渐成为SEO从业者的热门选择。本文…

【清华大学第七版】DeepSeek赋能家庭教育的实操案例(批改作文+辅助语文/数学/科学学习+制定学习计划)

我用夸克网盘分享了「DeepSeek完整资料合集」&#xff0c;点击链接即可保存。打开「夸克APP」&#xff0c;无需下载在线播放视频&#xff0c;畅享原画5倍速&#xff0c;支持电视投屏。 链接&#xff1a;https://pan.quark.cn/s/621259e4af15 近日&#xff0c;清华大学发布了《…

Opencv之掩码实现图片抠图

掩码实现图片抠图 目录 掩码实现图片抠图1 掩码1.1 概念1.2 创建掩码1.3抠图思路 2 代码测试 1 掩码 1.1 概念 掩码&#xff08;Mask&#xff09;是一种用于指定图像处理操作区域的工具。掩码通常是一个与图像尺寸相同的二值图像&#xff0c;其中像素值为0表示不处理&#xff…

基于ssm的一家运动鞋店的产品推广网站的设计

项目简介 一家运动鞋店实现了以下功能&#xff1a; 实现了用户在线选择试题并完成答题&#xff0c;在线查看考核分数。管理员管理收货地址管理、购物车管理、字典管理、留言版管理、新闻信息管理、产品管理、产品收藏管理、产品评价管理、产品订单管理、单页数据管理、用户管…

3.14学习总结

今天完成了几道关于二叉树的算法题 关于二叉树的最小最大深度和数据流中的第k大元素&#xff0c;用到优先队列&#xff0c;学习了有关java的基础知识&#xff0c;学习了双指针法。

spring boot3 kafka集群搭建到使用

首先自行安装docker&#xff0c;通过docker容器安装kafka CentOS 系统 docker安装地址 1.pom.xml和application.properties或者application.yml文件配置 <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</arti…