首页 > 编程语言 >揭秘Python中的JSON数据格式与Requests模块

揭秘Python中的JSON数据格式与Requests模块

时间:2024-04-28 20:33:59浏览次数:18  
标签:Python self json JSON test 数据格式 requests response def

From: https://mp.weixin.qq.com/s/QgGyn2efYtVKI65RwXoiEA

------------------------------------------------------------------------------------

import pytest
import json
import requests
from requests.auth import HTTPBasicAuth
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry

class Test_Json_And_Requests:

def test_1json(self):
# 创建JSON数据
data = {
"name": "John",
"age": 30,
"city": "New York"
}
json_data = json.dumps(data) # 将Python对象转换为JSON字符串
print(json_data) # 输出:{"name": "John", "age": 30, "city": "New York"}
# 解析JSON数据
json_string = '{"name": "Jane", "age": 28, "city": "San Francisco"}'
parsed_data = json.loads(json_string) # 将JSON字符串转换为Python字典
print(parsed_data) # 输出:{'name': 'Jane', 'age': 28, 'city': 'San Francisco'

def test_2requests(self):
response = requests.get('https://api.github.com')
print(response.status_code) # 输出HTTP状态码,如:200
print(response.json()) # 输出响应体内容(假设响应是JSON格式)
# 保存完整的响应信息
with open('github_response.json', 'w') as f:
json.dump(response.json(), f)

def test_3get(self):
params = {'q': 'Python requests', 'sort': 'stars'}
response = requests.get('https://api.github.com/search/repositories', params=params)
repos = response.json()['items']
for repo in repos[:5]: # 打印前5个搜索结果
print(repo['full_name'])

def test_4post(self):
payload = {'key1': 'value1', 'key2': 'value2'}
headers = {'Content-Type': 'application/json'}
response = requests.post('http://httpbin.org/post', json=payload, headers=headers)
print(response.json())

def test_5timeout(self):
requests.get('https://api.github.com', timeout=2) # 设置超时时间为2秒

def test_6deal_cookies(self):
# 保存cookies
response = requests.get('https://api.github.com')
cookies = response.cookies
# 发送带有cookies的请求
res = requests.get('https://api.github.com', cookies=cookies)
print(res.json())
assert len(res.json()) > 1

def test_7http_headers(self):
headers = {'User-Agent': 'My-Custom-UA'}
response = requests.get('http://httpbin.org/headers', headers=headers)
print(response.text)

def test_8downlaod_files(self):
url = r'https://example.com/image.jpg' # should use an available url
response = requests.get(url)
# 写入本地文件
with open('image.jpg', 'wb') as f:
f.write(response.content)

def test_9authtication(self):
response = requests.get('http://test-gssc-rs.gwm.cn:9800/#/login', auth=HTTPBasicAuth('98702085', 'xx'))
print(response.json())

def test_10retry(self):
# 创建一个重试策略
retry_strategy = Retry(
total=3,
status_forcelist=[429, 500, 502, 503, 504],
backoff_factor=1,
)
# 添加重试策略到适配器
adapter = HTTPAdapter(max_retries=retry_strategy)
# 将适配器添加到会话
session = requests.Session()
session.mount('http://', adapter)
session.mount('https://', adapter)
response = session.get('https://api.github.com')

if __name__ == '__main__':
Test_Json_And_Requests().test_10retry()

标签:Python,self,json,JSON,test,数据格式,requests,response,def
From: https://www.cnblogs.com/Raul2018/p/18164433

相关文章

  • Python中lambda表达式的用法
    lambda表达式本身是一个非常基础的python函数语法,其基本功能跟使用def所定义的python函数是一样的,只是lambda表达式基本在一行以内就完整的表达了整个函数的运算逻辑。这里我们简单展示一些lambda表达式的使用示例,以供参考。二元求和首先我们尝试一个最简单的二元求和的ipython......
  • python使用迭代生成器yield减少内存占用的方法
    在python编码中for循环处理任务时,会将所有的待遍历参量加载到内存中。其实这本没有必要,因为这些参量很有可能是一次性使用的,甚至很多场景下这些参量是不需要同时存储在内存中的,这时候就会用到本文所介绍的迭代生成器yield。1.基本使用首先我们用一个例子来演示一下迭代生成器yi......
  • Python多线程编程深度探索:从入门到实战
    title:Python多线程编程深度探索:从入门到实战date:2024/4/2818:57:17updated:2024/4/2818:57:17categories:后端开发tags:多线程并发编程线程安全Python异步IO性能优化实战项目第1章:Python基础知识与多线程概念Python简介:Python是一种高级、通用、解释......
  • python读取文件指定行的三种方法
    1.行遍历实现在python中如果要将一个文件完全加载到内存中,通过file.readlines()即可,但是在文件占用较高时,我们是无法完整的将文件加载到内存中的,这时候就需要用到python的file.readline()进行迭代式的逐行读取:filename='hello.txt'withopen(filename,'r')asfile:l......
  • 在Python中将字典转为成员变量的方法
    当我们在Python中写一个class时,如果有一部分的成员变量需要用一个字典来命名和赋值,此时应该如何操作呢?这个场景最常见于从一个文件(比如json、npz之类的文件)中读取字典变量到内存当中,再赋值给一个类的成员变量,或者已经生成的实例变量。使用__dict__定义成员变量在python中直接支......
  • python裁切视频后三秒
    代码: importsubprocessfromdatetimeimporttimedeltaimportosdefparse_time(time_str):"""将时间字符串解析为秒"""hours,minutes,seconds=map(int,time_str.split(':'))returntimedelta(hours=hours,minutes......
  • 第一章 python基础
    1.变量1.1变量的概念可以改变的量就是变量,实际上指代码的是内存的一块空间在内存中,变量默认一次只能指向一个值,当一个值没有任何变量指向的时候,内存会自动把数据从内存释放1.2变量的命名字母、数字、下划线,首字符不能为数字严格区分大小写,且不能使用关键字变量命......
  • QJsonArray对其对象排序
    #include<QCoreApplication>#include<QJsonArray>#include<QJsonObject>#include<QDebug>#include<QList>//比较函数,用于指定排序规则boolcompareJsonObjects(constQJsonObject&obj1,constQJsonObject&obj2){returnobj1......
  • Python-PyQt5接口压测工具分享
    1、页面介绍  2、运行效果 ......
  • python主题LDA建模和t-SNE可视化
    原文链接:http://tecdat.cn/?p=4261原文出处:拓端数据部落公众号 使用潜在Dirichlet分配(LDA)和t-SNE中的可视化进行主题建模。本文中的代码片段仅供您在阅读时更好地理解。有关完整的工作代码,请参阅完整资料。我们将首先介绍主题建模和t-SNE,然后将这些技术应用于两个数据集:20个......