网站网页设计中怎么添加页码信息seo每日一帖
以下是一个淘宝商品数据清洗实战案例,包含从读取复杂 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_id
、title
、price
等),嵌套的详情字段(detail
内的 size
、color
、material
),图片列表字段(images
)以及销售数据字段(sales
)。不同商品 JSON 数据在结构上大体相似,但可能存在部分字段缺失或格式不一致情况。
三、数据清洗步骤
- 导入必要的库
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 Noneitem['color'] = ', '.join(detail['color']) if 'color' in detail else Noneitem['material'] = detail['material'] if 'material' in detail else Nonedel 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 0del item['sales']
四、存入 MySQL 数据库
- 连接数据库
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 数据库表的清洗与存储过程,后续可基于该数据库表进行各种数据分析与业务操作。实际应用中,数据量往往巨大,还需考虑性能优化,如批量插入、索引优化等,同时针对更多复杂情况(如异常数据、重复数据处理)进一步完善代码逻辑。