首页 > 编程语言 >6-python之数据解析

6-python之数据解析

时间:2024-12-14 13:30:46浏览次数:21  
标签:info python print json url 字符串 解析 数据 字典


前言

当响应数据不是纯json字符串,调用响应对象.json() 报错,需要先通过正则处理多余的内容,变成了一个长得像纯列表或者纯字典字符串数据,再把json字符串数据转为字典数据,进行数据解析

一、json字符串是什么?

前后端交互都会规定一种数据类型:json字符串--res.json()转为字典

二、数据解析步骤

以下载多种图片为案例

1.-多张图片url所在的url

https://image.so.com/j?callback=jQuery18304989526863714209_1725106262857&q=%E8%A1%A8%E6%83%85%E5%8C%85%E5%9B%BE%E7%89%87&qtag=&pd=1&pn=60&correct=%E8%A1%A8%E6%83%85%E5%8C%85%E5%9B%BE%E7%89%87&adstar=0&tab=all&sid=ce14b521d731a8f9d597d6c88bb05040&ras=6&cn=0&gn=0&kn=0&crn=0&bxn=0&cuben=0&pornn=0&manun=50&src=tab_www&sn=60&ps=121&pc=121&_=1725106397610

代码如下(示例):

url = 'https://image.so.com/j?callback=jQuery18304989526863714209_1725106262857&q=%E8%A1%A8%E6%83%85%E5%8C%85%E5%9B%BE%E7%89%87&qtag=&pd=1&pn=60&correct=%E8%A1%A8%E6%83%85%E5%8C%85%E5%9B%BE%E7%89%87&adstar=0&tab=all&sid=ce14b521d731a8f9d597d6c88bb05040&ras=6&cn=0&gn=0&kn=0&crn=0&bxn=0&cuben=0&pornn=0&manun=50&src=tab_www&sn=60&ps=121&pc=121&_=1725106397610'
import requests

res = requests.get(url)
result = res.text # 字符串

2.响应的内容不是一个长得像纯列表或者纯字典的数据

 print(res.text)

requests.exceptions.JSONDecodeError: Expecting value: line 1 column 2 (char 1)

当前的响应数据不是纯json字符串 调用响应对象.json() 报错

print(res.json())

jQuery18304989526863714209_1725106262857({});

3.通过正则处理多余的内容,变成了一个长得像纯列表或者纯字典字符串数据

代码如下(示例):

import  re
# 字符串数据:长的和字典一样
st = re.findall('\((.*?)\);', result)[0]

 4.数据取值(取出图片的url)

当前是一个字符串数据,取出内容不太方便,最好是把这个数据变成字典/列表
import json
st_dict = json.loads(st) # 字典

5.保存图片 

import os
if os.path.exists('360图片'):
    print('已存在')
else:
    os.mkdir('360图片')
# 把json字符串数据转为字典数据
import json
st_dict = json.loads(st) # 字典
count = 1
for i in st_dict['list']:
   try:
       # i=响应内容中list对应的列表中的每一条数据
       # 取出图片url 发起请求,得到响应内容进行保存
       img_url = i['_thumb']
       img_res = requests.get(img_url)
       # 文件名是变化的
       # 后缀也要变化,如果图片是动图,保存的后缀就是.gif
       # 后缀也要变化,如果图片是静图,保存的后缀就是.png .jpg
       suffix = img_url.split('.')[-1]
       with open(f'360图片\{count}.{suffix}', 'wb')as f:
           # 字节数据
           f.write(img_res.content)
       count += 1
   except:
       continue

三、知识拓展 

1.python中os模块创建文件夹

import os
if os.path.exists('360图片'):
    print('已存在')
else:
    os.mkdir('360图片')

2. python中json模块转换类型

import json

# info = {'name':'shuke'} # str -->{"name": "shuke"}
# # 字典转为json字符串
# info_str = json.dumps(info)
# print(type(info_str))

# info = {'name':'xxx'}  #如果字典中的数据是中文,转为json字符串,中文会进行编码
# # 字典转为json字符串
# info_str = json.dumps(info,ensure_ascii=False) # ensure_ascii=False不让中文编码
# print(info_str)
# print(type(info_str))


info = '{"name": "xxx"}' # json字符串
# 字典
info_dict = json.loads(info)
print(info_dict)
print(type(info_dict))


总结

字典--通过json.dumps()-》转化为json字符串
json字符串--通过json.loads()-》转化为字典

标签:info,python,print,json,url,字符串,解析,数据,字典
From: https://blog.csdn.net/2401_87633706/article/details/144461785

相关文章

  • 大数据治理相关工具:提升数据质量与合规性
    目录什么是大数据治理工具?常见的大数据治理工具1.Collibra2.InformaticaDataGovernance3.Talend4.ApacheAtlas5.AWSLakeFormation6.MicrosoftAzurePurview总结WelcometoCodeBlock'sblog本篇文章主要介绍了[大数据治理相关工具:提升数据质量与......
  • 【机器学习与数据挖掘实战】案例02:基于K-Means算法的航空公司客户价值分析
    【作者主页】FrancekChen【专栏介绍】⌈⌈⌈机器学习与数据挖掘实战⌋......
  • 基于聚类分析的葡萄酒质量评价模型建立及 Python 实现(二)
    (三)问题三:酿酒葡萄与葡萄酒理化指标关系筛选理化指标计算相关系数矩阵(简单示例,可根据实际情况进一步分析),选择相关程度较高的指标(这里省略具体选择代码,可根据阈值等方式选择)。importpandasaspdimportnumpyasnp#读取酿酒葡萄和葡萄酒的理化指标数据(假设数据格式为CSV......
  • python修改word的字体
    原始文档0、打开文档importwin32com.clientaswin32fromwin32com.clientimportconstantsimportosdoc_app=win32.gencache.EnsureDispatch('Word.Application')#打开word应用程序doc_app.Visible=Truecurr_path=os.getcwd()file_path=r'%s\示例文档.do......
  • 基于聚类分析的葡萄酒质量评价模型建立及 Python 实现(一)
    一、引言    葡萄酒质量的评估在传统上主要依赖评酒员的感官评价,但这种方式主观性较强,结果存在一定的不确定性。为了建立更为客观、科学的葡萄酒质量评价体系,本文深入探讨酿酒葡萄品质与葡萄酒质量之间的关系,以及葡萄和葡萄酒的理化指标对质量的影响。通过一系列严谨......
  • 通过RAG技术处理半结构化数据:深入解析与实用指南
    引言在现代数据处理领域,半结构化数据以其独特的混合文本和表格格式(如PDF文件)成为一种常见的数据类型。然而,如何有效地挖掘这些数据中的信息却是一个挑战。本文介绍了一种利用RAG(检索增强生成)技术处理半结构化数据的实用方法,帮助开发者更好地解析和利用这些数据类型。主要......
  • WIFI&蓝牙(ESP32)转CAN总线&串口TTL模块 - micropython开发环境搭建
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ESP32_CAN"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 题外话:脚本语言运行原理: https:......
  • Mac安装mysql8.0版本数据库
    一、环境和所需软件概述1.1目前环境:MacOS(10.15.3)1.2所需软件:mysql-8.0.18-macos10.15-x86_64.dmg(8.0系列都可以)二、安装步骤(全部采用高清大图吧!!)2.1进入mysql安装包下载页面,下版本的dmg文件,下载地址如下:msyql官网下载地址-------------图一-----------------......
  • 【EI复现】基于深度强化学习的微能源网能量管理与优化策略研究(Python代码实现)
    ......
  • 域名解析到返回中间流程
    当你在浏览器上输入一个域名并按下回车后,涉及的过程可以分为网络请求处理、服务器响应以及SpringMVC框架的请求处理。以下是具体步骤:1.网络层处理DNS解析:浏览器会通过DNS解析将域名(例如www.example.com)转换为对应的IP地址。如果本地DNS缓存中存在记录,则直接使用;否则请......