京东API数据清洗与结构化存储:从JSON原始数据到MySQL实战

发布于:2025-03-21 ⋅ 阅读:(36) ⋅ 点赞:(0)

以下是关于京东 API 数据清洗与结构化存储,从 JSON 原始数据到 MySQL 实战的详细步骤:

一、数据获取

通过京东开放平台的 API 接口,使用合适的编程语言(如 Python)向京东服务器发送请求,获取相关商品或业务数据。以 Python 为例,使用 requests 库来发送 HTTP 请求获取 JSON 格式的数据。

import requests

# 京东 API 接口地址
url = "https://api.jd.com/your_api_endpoint"

# 请求参数(根据实际情况设置)
params = {
    "key1": "value1",
    "key2": "value2"
}

# 发送 GET 请求
response = requests.get(url, params=params)

# 检查请求是否成功
if response.status_code == 200:
    data = response.json()
    print(data)
else:
    print(f"请求失败,状态码: {response.status_code}")

二、数据清洗

  1. 缺失值处理
    • 遍历 JSON 数据,检查每个字段是否存在缺失值。如果是数值类型字段,可以使用默认值(如 0)填充;如果是文本类型字段,可以使用空字符串填充。
    • 例如,对于一个包含商品信息的 JSON 数据,其中 “价格” 字段可能存在缺失值:
if "price" not in data:
    data["price"] = 0

 2.数据类型转换

  • 将 JSON 数据中的字段转换为合适的数据类型。例如,将字符串类型的 “销量” 转换为整数类型。
if "sales" in data:
    try:
        data["sales"] = int(data["sales"])
    except ValueError:
        data["sales"] = 0

3.异常值处理

  • 对于明显不合理的数据进行处理。例如,商品价格为负数是不合理的,可以将其修正为 0。
if "price" in data and data["price"] < 0:
    data["price"] = 0

 4.重复数据处理

  • 如果获取的数据中存在重复记录,需要进行去重处理。可以根据唯一标识符(如商品 ID)来判断数据是否重复。
  • 假设 data 是一个包含多个商品信息的列表,每个元素是一个字典:
unique_data = []
seen = set()
for item in data:
    item_id = item.get("id")
    if item_id and item_id not in seen:
        unique_data.append(item)
        seen.add(item_id)

三、数据结构化

根据数据的内容和业务需求,设计 MySQL 数据库的表结构。以商品数据为例,可能需要设计如下表结构:

-- 创建商品表
CREATE TABLE products (
    id INT PRIMARY KEY AUTO_INCREMENT,
    product_id VARCHAR(255) NOT NULL,
    product_name VARCHAR(255),
    price DECIMAL(10, 2),
    sales INT,
    category VARCHAR(255),
    -- 其他字段根据实际情况添加
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

 将清洗后的数据按照设计的表结构进行结构化处理,以便插入到 MySQL 数据库中。

 

import mysql.connector

# 连接 MySQL 数据库
mydb = mysql.connector.connect(
    host="localhost",
    user="your_username",
    password="your_password",
    database="your_database"
)

mycursor = mydb.cursor()

for item in unique_data:
    product_id = item.get("id")
    product_name = item.get("name")
    price = item.get("price")
    sales = item.get("sales")
    category = item.get("category")

    sql = "INSERT INTO products (product_id, product_name, price, sales, category) VALUES (%s, %s, %s, %s, %s)"
    val = (product_id, product_name, price, sales, category)
    mycursor.execute(sql, val)

mydb.commit()
mycursor.close()
mydb.close()

以上就是从京东 API 获取 JSON 原始数据,经过清洗、结构化后存储到 MySQL 数据库的完整实战过程。在实际应用中,还需要根据具体的业务需求和数据特点进行适当的调整和优化。