当前位置: 首页 > news >正文

淘宝商品数据清洗实战:从复杂JSON到结构化数据库(附Python脚本)

以下是一个淘宝商品数据清洗实战案例,包含从读取复杂 JSON 数据、清洗到存入结构化数据库(这里以 MySQL 为例)的完整过程,并附上 Python 脚本。

一、数据来源与目标

通常从淘宝开放平台获取的商品数据是 JSON 格式,内容涵盖商品基本信息(名称、价格、品牌等)、详情描述、图片链接、销售数据等诸多复杂嵌套结构。目标是将这些数据清洗整理成关系型数据库表结构,方便后续查询、分析与业务应用,例如构建商品推荐系统、销售数据分析平台等。

二、分析 JSON 数据结构

假设我们获取到的淘宝商品 JSON 样本如下(精简示意):

{
    "item_id": "123456",
    "title": "时尚女士连衣裙",
    "price": "99.99",
    "brand": "ABC",
    "detail": {
        "size": ["S", "M", "L"],
        "color": ["红色", "蓝色"],
        "material": "棉质"
    },
    "images": ["image1.jpg", "image2.jpg"],
    "sales": {
        "monthly": 100,
        "total": 500
    }
}

 

可以看出有基础属性字段(item_idtitleprice 等),嵌套的详情字段(detail 内的 sizecolormaterial),图片列表字段(images)以及销售数据字段(sales)。不同商品 JSON 数据在结构上大体相似,但可能存在部分字段缺失或格式不一致情况。

三、数据清洗步骤

  1. 导入必要的库
import json
import mysql.connector

 2.读取 JSON 文件
假设数据存储在 taobao_items.json 文件中:

with open('taobao_items.json', 'r', encoding='utf-8') as file:
    data = json.load(file)

 3.基础字段清洗与转换

  • 价格字段可能包含货币符号,需要去除并转换为数值类型:
for item in data:
    item['price'] = float(item['price'].replace('¥', ''))

 确保 item_id 为字符串类型:

    item['item_id'] = str(item['item_id'])

4.嵌套字段处理
对于 detail 字段,将其扁平化,方便存入数据库表:

for item in data:
    detail = item['detail']
    item['size'] = ', '.join(detail['size']) if 'size' in detail else None
    item['color'] = ', '.join(detail['color']) if 'color' in detail else None
    item['material'] = detail['material'] if 'material' in detail else None
    del item['detail']

 5.图片字段处理
将图片列表转换为字符串,以特定分隔符连接,便于存储:

for item in data:
    item['images'] = ';'.join(item['images']) if 'images' in item else None

 6.销售数据处理
可以计算一些衍生指标,如销售增长率等(这里简单示例):

for item in data:
    sales = item['sales']
    item['growth_rate'] = (sales['monthly'] / sales['total']) if sales['total'] > 0 else 0
    del item['sales']

 

四、存入 MySQL 数据库

  1. 连接数据库
mydb = mysql.connector.connect(
    host="localhost",
    user="root",
    password="your_password",
    database="taobao_db"
)
mycursor = mydb.cursor()

 2.创建表结构(如果不存在)

create_table_query = """
CREATE TABLE IF NOT EXISTS taobao_items (
    item_id VARCHAR(255),
    title VARCHAR(255),
    price DECIMAL(10, 2),
    brand VARCHAR(255),
    size VARCHAR(255),
    color VARCHAR(255),
    material VARCHAR(255),
    images VARCHAR(255),
    growth_rate DECIMAL(10, 2)
)
"""
mycursor.execute(create_table_query)

 3.插入数据

insert_query = """
INSERT INTO taobao_items (item_id, title, price, brand, size, color, material, images, growth_rate)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)
"""
for item in data:
    values = (
        item['item_id'], item['title'], item['price'], item['brand'],
        item['size'], item['color'], item['material'], item['images'],
        item['growth_rate']
    )
    mycursor.execute(insert_query, values)
mydb.commit()

 4.关闭连接

mycursor.close()
mydb.close()

 通过以上步骤,就完成了从复杂淘宝商品 JSON 数据到结构化 MySQL 数据库表的清洗与存储过程,后续可基于该数据库表进行各种数据分析与业务操作。实际应用中,数据量往往巨大,还需考虑性能优化,如批量插入、索引优化等,同时针对更多复杂情况(如异常数据、重复数据处理)进一步完善代码逻辑。

相关文章:

  • LeeCode 434. 字符串中的单词数
  • Spring Initializr搭建spring boot项目
  • 软件工程面试题(七)
  • 格雷码和汉明码的详细总结
  • Linux中安装宝塔面板
  • vcruntime140.dll丢失导致程序无法运行?八种vcruntime140高效修复方案详解
  • 记录一次交易耗时有毛刺TDSQL数据库排查过程
  • 生物化学笔记:医学免疫学原理08 细胞因子+细胞因子的种类+细胞因子与疾病
  • 【网络】Socket套接字
  • 地图项目入手学习
  • SQL 复杂查询和性能优化
  • 2025美国网络专线国内服务商推荐
  • Unity中实现UI的质感和圆角
  • 实战经验深度解析 | 博睿数据制造行业精选案例集发布!
  • 项目管理证书 PMP 的含金量高吗?
  • SAIL-RK3588J 核心板技术方案——高精度装配式建筑机器人控制‌
  • 看懂roslunch输出
  • PyQt QDoubleSpinBox控件用法详解
  • EMC电源端传导干扰预测试
  • 龙虎榜——20250328
  • 江阴高端网站建设/爱站网排名
  • 个人建设网站流程/百度优化seo
  • 漳州做网站含博大选/百度seo官网
  • 湖南长沙微信平台号/百度关键词相关性优化软件
  • 专门做美食的视频网站/网络推广竞价是什么
  • 做动态的网站的参考资料有哪些/手机如何建网站