Python+Requests模拟发送GET请求

news2025/1/10 17:22:31

模拟发送GET请求

前置条件:导入requests库

一、发送不带参数的get请求

代码如下:

以百度首页为例

import requests

# 发送get请求
response = requests.get(url="http://www.baidu.com")
print(response.content.decode("utf-8"))  # 以utf-8的编码输出内容
二、发送带参数的get请求

发送带参数的get请求有几种方式

方式一:参数在URL中

代码如下:

以百度首页为例

import requests

# 发送带参数的get请求
# 方式一:参数在URL中
# http 协议,www.baidu.com 主机号,/s 请求地址,wd=猫 参数
host = "http://www.baidu.com/s?wd=猫"
# 因为百度服务器会对头部信息做检查所以需要添加请求头
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36'}
response = requests.get(url=host,headers=headers)
print(response.content.decode("utf-8"))

方式二:参数在字典中

代码如下:

以百度首页为例

import requests

# 方式二:参数在字典中
host = "http://www.baidu.com/s"
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36'}
data = {'wd':'金钱豹'}  # 参数在字典中
response = requests.get(url=host,headers=headers,params=data)
print(response.content.decode('utf-8'))

获取响应数据的基本信息

代码如下:

以百度首页为例

import requests

# 发送get请求
response = requests.get(url="http://www.baidu.com")
# 获取响应的基本信息
print( "状态码:", response.status_code )
print( "请求URL:",response.url )
print( "头部信息:", response.headers )
print( "cookie信息:", response.cookies )
print("字节形式信息:",response.content )
print("文本信息:",response.text)
print("编码格式:",response.encoding)

封装get请求

代码示例:

# 封装get请求
def send_get(url):
    response = requests.get(url=url)
    return response

print(send_get("https://www.jd.com/").content.decode("utf-8"))

封装main方法

代码示例:

# 封装main方法
def run_main(method,url,data=None,json_info=None):
    response = None
    if method == "GET":
        response = send_get(url,data)
    elif method == "POST":
        response = send_post(url,data,json_info)
    else:
        print("参数错误")
        response = None
    return response

print(run_main("GET","https://www.jd.com/").content.decode("utf-8"))

封装测试类

代码示例:

# 将写好的get、post、run_mian方法做成类
import requests
class run_test:
    session_obj = requests.session()
    def __init__(self,method,url,params=None,data=None,headers=None):
        self.method = method
        self.url = url
        self.params = params
        self.data = data
        self.headers = headers

    def send_get(self):
        res = run_test.session_obj.get(url=self.url,params=self.params,headers=self.headers)
        return res
    def send_post(self):
        res = run_test.session_obj.post(url=self.url,params=self.params,
                                        data=self.data,headers=self.headers)
        return res

    def run_main(self):
        if self.method == "GET":
            res = self.send_get()
        elif self.method == "POST":
            res = self.send_post()
        else:
            print("请求方式错误,请检查!")
            res = None
        return res


if __name__ == "__main__":
    method = "GET"
    url = "https://www.jd.com"
    headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"}

    test_obj = run_test(method=method,url=url,headers=headers)
    response = test_obj.run_main()
    print(response.content.decode("utf-8"))

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

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

相关文章

geoserver 发布图层(tif、shp等)

我们用得最多的是这个板块的内容 下面我们来尝试发布地图。点击【数据】——【工作区】——【添加新的工作区】,工作区可以理解为是用来存放发布地图的一个集合。 在【新建工作区】中输入名称,还有一个命名空间URI,这个只要保持和之前的工作区…

大气多功能工作室个人引导页源码

源码简介 大气多功能工作室个人引导页源码,支持三端自适应,带赞助功能,采用设计配色网站点赞量最高的一个配色方案,一个二次元风格的引导页就此诞生,经过长传美国服务器测试,结果也是很理想,测速…

AI时代架构师之路:技术、洞察和创新的完美融合

随着人工智能技术的飞速发展,我们正置身于一个由数据驱动的时代。在这个充满无限可能性的AI时代,架构师成为设计和构建先进系统的关键角色。然而,在追逐技术的同时,架构师需要修炼一系列综合素养,使其在技术、业务和伦…

OSI七层模型与TCP/IP四层模型的区别(计算机网络)

一、OSI七层网络模型 OSI 网络模型共有 7 层,分别是应用层、表示层、会话层、传输层、网络层、数据链路层和物理层。 应用层,负责给应用程序提供统一的接口;表示层,负责把数据转换成兼容另一个系统能识别的格式;会话…

java数据结构(哈希表—HashMap)含LeetCode例题讲解

目录 1、HashMap的基本方法 1.1、基础方法(增删改查) 1.2、其他方法 2、HashMap的相关例题 2.1、题目介绍 2.2、解题 2.2.1、解题思路 2.2.2、解题图解 2.3、解题代码 1、HashMap的基本方法 HashMap 是一个散列表,它存储的内容是键…

全志XR806基于FreeRTOS下部署竞技机器人先进模糊控制器

前言 很荣幸参与到由“极术社区和全志在线联合组织”举办的XR806开发板试用活动。本人热衷于各种的开发板的开发,同时更愿意将其实现到具体项目中。秉承以上原则,发现大家的重心都放在开发中的环境构建过程,缺少了不少实际应用场景的运用&am…

postman参数为D:\\audio\\test.mp3请求报错

报错信息 报错 java.lang.IllegalArgumentException: Invalid character found in the request target [/v1/audio/transcriptions?audioPathD:\\audio\\test.mp3 ]. The valid characters are defined in RFC 7230 and RFC 3986 解决方式 yml文件上放行指定字符 relaxed-pa…

外包搞了6年,技术退步明显......

先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&#xf…

Python+Requests模块session处理和SSL证书处理关闭警告

session处理 部分接口需要先登录网址,才能有权限进行调用,这时可以使用到session,具体操作是:先使用网站 的登录api进行登录,得到session后,然后用该session来请求其它的接口。 示例代码: se…

[1] AR Tag 在ros中的使用

1.定义 AR Tag 是一种用于增强现实(AR)应用中的视觉标记,用于跟踪和定位虚拟物体在现实世界中的位置。 AR Tag由黑白正方形图像表示,图像内部有黑色边框中的某些图案。它与我们经常用到的二维码长得类似,原理其实也一…

百元挂耳式蓝牙耳机推荐,几款性价比高的开放式蓝牙耳机

在百元价位段,挂耳式蓝牙耳机是备受消费者追捧,提供了出色的音质、便携性和无拘束的使用体验,无论您是追求音乐品质,还是需要在办公或运动中保持通讯畅通,基本上都是离不开耳机的身影,今天小编为大家推荐几…

Leetcode-二叉树oj题

1.二叉树的前序遍历 144. 二叉树的前序遍历https://leetcode.cn/problems/binary-tree-preorder-traversal/这个题目在遍历的基础上还要求返回数组,数组里面按前序存放二叉树节点的值。 既然要返回数组,就必然要malloc一块空间,那么我们需…

temu货不对板哪里修改图片

在Temu这个跨境电商平台上,如果您需要修改商品图片,通常需要在卖家中心进行操作。下面是一般的步骤,但请注意,不同平台的操作可能略有不同,具体请参考Temu官方的帮助文档或联系客服。 先给大家推荐一款拼多多/temu运营…

数据结构 / 队列 / 循环队列

1. 定义 为充分利用向量空间,克服假溢出现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。循环队列是把顺序队列首尾相连,把存储…

【Java8系列07】Java8日期处理

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【电路笔记】-并联电阻

并联电阻 文章目录 并联电阻1、概述2、并联电阻示例13、并联电阻示例24、并联电阻电路中的电流5、并联电阻器示例36、总结 当电阻器的两个端子分别连接到另一个或多个电阻器的每个端子时,电阻器被称为并联连接在一起。 1、概述 与之前的串联电阻电路不同&#xff0…

「Qt Widget中文示例指南」如何创建一个计算器?(二)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 本文将展示如何使用…

visual Studio MFC 平台实现图像增强中Gray-level slicing,Bit-plane slicing,对比度拉伸三种方法

MFC 实现图像增强–分段式变换 本文使用visual Studio MFC 平台实现图像增强中的第三大类分段式变换中的三种方法,包括Gray-level slicing,Bit-plane slicing,对比度拉伸. 关于其他MFC单文档工程可参考 01-Visual Studio 使用MFC …

ES-深入理解倒排索引

倒排索引 idproductdesc1新版 小米 至尊-纪念版手机1小米 NFC 手机3NFC手机4小米 耳机5华为 耳机6扫地机器人7华为 Mata………………term_indexterm dictionaryposting list------------------------------------小米1……100W华为6,7,9NFC76,90耳机5352红米643,98机器人645,9…

【开源】基于JAVA语言的考研专业课程管理系统

项目编号: S 035 ,文末获取源码。 \color{red}{项目编号:S035,文末获取源码。} 项目编号:S035,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 考研高校模块2.3 高…