×

如何使用Python的第三方库来解析淘宝评论的JSON数据?

知名用户18007905473 知名用户18007905473 发表于2025-10-27 15:06:23 浏览28 评论0

抢沙发发表评论

使用 Python 第三方库解析淘宝评论 JSON 数据,核心是通过数据提取库处理嵌套结构、数据清洗库优化文本、数据分析库实现结构化转换,以下是针对不同需求的第三方库组合方案及实操示例:

一、核心场景与对应第三方库

淘宝评论 JSON 解析的核心需求可分为「嵌套字段提取」「文本清洗」「结构化分析」三类,对应库的选择如下:
需求场景推荐第三方库核心作用
嵌套 JSON 字段提取glomjq简化多层嵌套字段提取(如从rateDetail.rateList[0].auction.title提取商品标题)
评论文本清洗与预处理jiebanltk(中文用jieba中文分词、去除停用词,为后续情感分析 / 热词提取做准备
结构化数据转换与分析pandas将 JSON 列表转为表格(DataFrame),支持筛选、统计、合并等批量操作
复杂 JSON 路径查询jsonpath-ng用类似 XPATH 的语法查询 JSON(如提取所有 5 星评论的内容)

二、分场景实操:第三方库解析示例

以下示例基于两种主流淘宝评论 JSON 来源(前端接口、官方 API),覆盖核心解析需求。

场景 1:用glom快速提取嵌套字段(适合复杂结构)

淘宝评论 JSON 常包含多层嵌套(如rateDetail → rateList → auction → title),glom可通过「路径表达式」直接提取目标字段,避免多层索引的繁琐写法。
1. 安装库
bash
pip install glom
2. 解析示例(前端接口 JSON)
假设前端接口返回的 JSON 结构如下(简化版):
json
{
  "rateDetail": {
    "rateList": [
      {
        "displayUserNick": "tb123***",
        "grade": 5,
        "rateContent": "质量很好,物流快",
        "auction": {"title": "2024夏季短袖T恤", "price": "99.00"}
      },
      {
        "displayUserNick": "tb456***",
        "grade": 4,
        "rateContent": "面料不错,尺码略大",
        "auction": {"title": "2024夏季短袖T恤", "price": "99.00"}
      }
    ]
  }}
3. 代码实现
python
运行
import jsonfrom glom import glom# 1. 加载淘宝评论JSON(此处用字符串模拟,实际可从接口/文件读取)review_json_str = '''{
  "rateDetail": {
    "rateList": [
      {
        "displayUserNick": "tb123***",
        "grade": 5,
        "rateContent": "质量很好,物流快",
        "auction": {"title": "2024夏季短袖T恤", "price": "99.00"}
      },
      {
        "displayUserNick": "tb456***",
        "grade": 4,
        "rateContent": "面料不错,尺码略大",
        "auction": {"title": "2024夏季短袖T恤", "price": "99.00"}
      }
    ]
  }
}'''review_data = json.loads(review_json_str)# 2. 定义提取规则:提取所有评论的「用户名、评分、评论内容、商品标题」# 规则说明:遍历rateList列表,为每个元素提取指定字段extract_rule = (
    "rateDetail.rateList",  # 数据源:评论列表
    [
        {
            "用户名": "displayUserNick",
            "评分": "grade",
            "评论内容": "rateContent",
            "商品标题": "auction.title"  # 嵌套字段:auction下的title
        }
    ])# 3. 执行提取parsed_comments = glom(review_data, extract_rule)# 4. 查看结果print("=== glom提取嵌套字段结果 ===")for idx, comment in enumerate(parsed_comments, 1):
    print(f"第{idx}条:{comment}")
4. 关键优势
  • 无需多层[].索引(如避免review_data["rateDetail"]["rateList"][0]["auction"]["title"]);

  • 支持默认值(如glom(review_data, "rateDetail.rateList[0].auction.brand", default="未知品牌"))。

场景 2:用pandas实现结构化分析(适合批量数据)

若采集了多页评论,pandas可将 JSON 列表转为表格(DataFrame),快速实现筛选、统计、合并等操作。
1. 安装库
bash
pip install pandas
2. 解析示例(官方 API JSON)
官方 API 返回的 JSON 结构(简化版):
json
{
  "taobao_item_review_get_response": {
    "code": 0,
    "reviews": {
      "review": [
        {"nick": "tb123***", "rate": 5, "content": "推荐购买", "created": "2024-05-20"},
        {"nick": "tb456***", "rate": 3, "content": "一般般", "created": "2024-05-19"}
      ]
    }
  }}
3. 代码实现
python
运行
import jsonimport pandas as pd# 1. 加载官方API返回的JSONofficial_json_str = '''{
  "taobao_item_review_get_response": {
    "code": 0,
    "reviews": {
      "review": [
        {"nick": "tb123***", "rate": 5, "content": "推荐购买", "created": "2024-05-20"},
        {"nick": "tb456***", "rate": 3, "content": "一般般", "created": "2024-05-19"}
      ]
    }
  }
}'''official_data = json.loads(official_json_str)# 2. 提取评论列表并转为DataFramereview_list = official_data["taobao_item_review_get_response"]["reviews"]["review"]df = pd.DataFrame(review_list)# 3. 结构化分析:筛选5星评论、统计评分分布# 筛选5星评论five_star_df = df[df["rate"] == 5]# 统计评分分布score_dist = df["rate"].value_counts().sort_index()# 4. 查看结果print("\n=== pandas结构化分析结果 ===")print("所有评论表格:")print(df[["nick", "rate", "content", "created"]])print("\n5星评论:")print(five_star_df[["nick", "content"]])print("\n评分分布:")print(score_dist)
4. 关键优势
  • 支持批量操作(如df[df["rate"] >= 4]筛选 4 星及以上评论);

  • 可直接导出为 Excel/Csv(df.to_excel("淘宝评论.xlsx", index=False))。

场景 3:用jieba+pandas清洗文本并提取热词(适合评论文本分析)

淘宝评论含特殊符号、冗余词汇,需用jieba分词 + 清洗,再结合pandas做热词统计。
1. 安装库
bash
pip install jieba pandas
2. 代码实现
python
运行
import jsonimport pandas as pdimport jiebafrom collections import Counter# 1. 加载评论JSON并转为DataFrame(沿用场景2的df)# 2. 文本清洗:去除特殊符号、多余空格def clean_content(content):
    import re    # 去除非中文/英文/数字的字符(如表情、标点)
    content = re.sub(r"[^\u4e00-\u9fa5a-zA-Z0-9\s]", "", str(content))
    # 去除多余空格
    return re.sub(r"\s+", " ", content).strip()# 应用清洗函数df["clean_content"] = df["content"].apply(clean_content)# 3. 中文分词(用jieba)def cut_words(content):
    # 分词并过滤短词(长度<2)和停用词
    stop_words = {"的", "了", "是", "我", "在", "和", "都", "很"}  # 自定义停用词
    words = jieba.lcut(content)
    return [word for word in words if len(word) >= 2 and word not in stop_words]# 对所有清洗后的评论分词df["words"] = df["clean_content"].apply(cut_words)# 4. 提取热词:统计所有评论中的高频词all_words = []for words in df["words"]:
    all_words.extend(words)top10_words = Counter(all_words).most_common(10)# 5. 查看结果print("\n=== jieba文本清洗与热词提取结果 ===")print("清洗后的评论:")print(df[["content", "clean_content"]])print("\n分词结果:")print(df[["clean_content", "words"]])print("\n评论热词TOP10:")for word, count in top10_words:
    print(f"{word}: {count}次")
4. 关键优势
  • 针对性处理中文评论(jieba支持自定义词典,可添加行业词汇如 “尺码”“面料”);

  • 热词结果可直接用于词云生成(结合wordcloud库)。

场景 4:用jsonpath-ng实现复杂路径查询(适合灵活筛选)

若需按条件筛选 JSON 数据(如 “提取所有 2024 年 5 月的 5 星评论”),jsonpath-ng可通过路径表达式快速实现。
1. 安装库
bash
pip install jsonpath-ng
2. 代码实现
python
运行
import jsonfrom jsonpath_ng import parse# 1. 加载前端接口评论JSON(沿用场景1的review_data)# 2. 定义JSONPath查询表达式:提取2024年5月的5星评论内容# 表达式说明:$..rateList[?(@.grade==5 && @.rateDate=~/2024-05/)]?.rateContent# $..rateList:遍历所有rateList元素;?():筛选条件;@.grade==5:评分5星;@.rateDate=~/2024-05/:时间含2024-05jsonpath_expr = parse('$..rateList[?(@.grade==5 && @.rateDate=~/2024-05/)].rateContent')# 3. 执行查询matches = [match.value for match in jsonpath_expr.find(review_data)]# 4. 查看结果print("\n=== jsonpath-ng复杂查询结果 ===")print("2024年5月的5星评论内容:")for idx, content in enumerate(matches, 1):
    print(f"第{idx}条:{content}")
4. 关键优势
  • 支持模糊匹配(如@.rateDate=~/2024/匹配 2024 年所有评论);

  • 适合动态筛选场景(无需提前定义提取规则)。

三、不同场景的库组合建议

解析需求推荐库组合适用场景
快速提取嵌套字段glom + json(标准库)需从多层结构中提取指定字段(如商品标题、用户评分)
批量评论统计分析pandas + json多页评论合并、评分分布统计、导出 Excel
评论文本挖掘jieba + pandas + wordcloud文本清洗、分词、热词提取、词云生成
灵活条件筛选jsonpath-ng + json按动态条件筛选(如特定时间、特定评分的评论)

四、注意事项

  1. 适配 JSON 来源差异:官方 API 与前端接口的字段名不同(如官方nick vs 前端displayUserNick),需根据来源调整提取规则;

  2. 异常处理:用try-except捕获 JSON 解析错误(如json.JSONDecodeError),用default参数处理缺失字段(如glomdefault="未知");

  3. 性能优化:大规模数据(如 10 万 + 评论)建议用pandaschunksize分批处理,避免内存溢出。

总结

Python 第三方库为淘宝评论 JSON 解析提供了高效工具:glom简化嵌套提取,pandas实现结构化分析,jieba处理中文文本,jsonpath-ng支持灵活筛选。实际应用中,可根据具体需求选择单一库或组合使用,核心目标是将非结构化 JSON 转为可分析的结构化数据,支撑后续的统计、挖掘场景。
要不要我帮你整理一份淘宝评论 JSON 解析工具包?包含上述所有场景的代码模板,可直接替换 JSON 数据使用。


群贤毕至

访客