123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588 |
- # -*- codeing = utf-8 -*-
- # @Time : 2021/4/4 15:22
- # @Author : Clown
- # @File : json转换.py
- # @Software : PyCharm
- import json
- import csv
- import time
- import os
- import re
- from dateutil.parser import parse
- from datetime import datetime, timedelta
- import pandas as pd
- def goodsform(input_file,output_file,time_str):
- for a, b, files in os.walk(input_file, topdown=False):
- for file in files:
- path = str(input_file) + '/' + str(file)
- try:
- with open(path,"r",encoding= "utf-8") as f1:#导入json文件
- data = json.load(f1)
- # print(json.dumps(data,ensure_ascii = False))
- except:
- data = ''
- try:
- title_1 = ["门店名称", "分类", "分类编码", "spu_id", "名称", "月售", "好评度", "折扣", "原价", "当前售价", "餐盒费", "文描"]
- with open(output_file + "/%s美团小程序单店菜单.csv" % str(time_str), 'a', newline='',
- encoding="utf-8-sig") as t: # encoding= "utf-8"
- writer = csv.writer(t) # 这一步是创建一个csv的写入
- writer.writerow(title_1) # 写入标签
- shop_name = data['d']['hr']['data']['data']['poi_info']['name']
- for list in data['d']['hr']['data']['data']['food_spu_tags']:
- name1 = list['name']#分类名
- name2 = list['product_count']#分类下商品数量
- for spus in list['spus']:#每有一个list都需要进行拆解,用for循环取值
- spuname = spus['name']#商品名称
- id = spus['id']
- description = spus['description']#文描
- like_ratio_desc_1 = spus['like_ratio_desc']
- try:
- like_ratio_desc = like_ratio_desc_1.split("度")[1]
- except:
- like_ratio_desc = like_ratio_desc_1
- month_saled_content_o = spus['month_saled_content'] # 月售
- month_saled_content = month_saled_content_o.split("售")[1]
- # print(month_saled_content)
- try:
- for skus in spus['skus']:
- origin_price = skus['origin_price']#原价
- price = skus['price']#当前售价
- box_price = skus['box_price']
- promotion_info = skus['promotion_info'] # 折扣
- n = [shop_name,name1,name2,id,spuname,month_saled_content,like_ratio_desc,promotion_info,origin_price,price,box_price,description]
- writer.writerow(n) # 写入样本数据
- # print(n)
- except:
- print('出现错误')
- except:
- try:
- try:
- title_2 = ['商圈', '品类标签', '门店名称', '评分', '月售', '人均', '起送价', '距离', '原始配送费', '折后配送费', '折扣满减',
- '点评标签']
- with open(output_file + "/%s美团小程序商圈top门店.csv" % str(time_str), 'a', newline='',
- encoding="utf-8-sig") as t_d: # encoding= "utf-8"
- writer_d = csv.writer(t_d) # 这一步是创建一个csv的写入
- writer_d.writerow(title_2) # 写入标签
- # for shop_list in data['d']['hr']['data']['data']['poilist']:
- for shop_list in data['data']['poilist']:
- name = shop_list['name']#门店名称
- month_sales_tip1 = shop_list['month_sales_tip']
- month_sales_tip = month_sales_tip1.split('售')[1]#月售
- min_price_tip1 = shop_list['min_price_tip']#起送价
- min_price_tip = min_price_tip1.split('¥')[1]##起送价min_price_tip=起送 ¥0
- distance1 = shop_list['distance']
- distance = distance1.split('k')[0]#距离km
- wm_poi_score = shop_list['wm_poi_score']#评分
- trade_area = shop_list['trade_area']#商圈
- third_category = shop_list['third_category']#品类标签
- shipping_fee_tip1 = shop_list['shipping_fee_tip'] # 配送费折后
- try:
- shipping_fee_tip = shipping_fee_tip1.split('¥')[1] # 配送费折后#shipping_fee_tip=配送 ¥5
- except:
- shipping_fee_tip = shipping_fee_tip1
- origin_shipping_fee_tip1 = shop_list['origin_shipping_fee_tip'] # 初始配送费origin_shipping_fee_tip=
- try:
- origin_shipping_fee_tip = origin_shipping_fee_tip1.split('¥')[1]# 初始配送费 # shipping_fee_tip=配送 ¥5
- except:
- origin_shipping_fee_tip = origin_shipping_fee_tip1
- average_price_tip1 = shop_list['average_price_tip']
- average_price_tip = average_price_tip1.split('¥')[1]#人均
- recommend_reason1 = []
- discounts21 = []
- str_1 = ';'
- for recommend_level_list in shop_list['recommend_level_list']:
- recommend_reason1.append(recommend_level_list['recommend_reason'])
- recommend_reason = str_1.join(recommend_reason1)#点评标签
- for discounts2 in shop_list['discounts2']:
- discounts21.append(discounts2['info'])
- discounts = str_1.join(discounts21)#折扣满减
- indata = [trade_area,third_category,name,wm_poi_score,month_sales_tip,average_price_tip,min_price_tip,distance,origin_shipping_fee_tip,shipping_fee_tip,discounts,recommend_reason]
- #商圈,品类标签,门店名称,评分,月售,人均,起送价,距离,原始配送费,折后配送费,折扣满减,点评标签
- # writer.writerows(n) # 写入样本数据
- writer_d.writerow(indata)
- except:
- title_2 = ['目标商圈解析文件','商圈', '品类标签', '门店名称', '评分', '月售', '人均', '起送价', '距离', '原始配送费', '折后配送费', '折扣满减',
- '点评标签']
- with open (output_file + "/%s美团小程序商圈top门店.csv" % str (time_str), 'a', newline='',
- encoding="utf-8-sig") as t_d: # encoding= "utf-8"
- writer_d = csv.writer (t_d) # 这一步是创建一个csv的写入
- writer_d.writerow (title_2) # 写入标签
- tag_trade_area = file
- for shop_list in data['data']['search_poi_list']:
- name = shop_list['name'] # 门店名称
- month_sales_tip1 = shop_list['month_sales_tip']
- month_sales_tip = month_sales_tip1.split ('售')[1] # 月售
- min_price_tip1 = shop_list['min_price_tip'] # 起送价
- min_price_tip = min_price_tip1.split ('¥')[1] ##起送价min_price_tip=起送 ¥0
- distance1 = shop_list['distance']
- distance = distance1.split ('k')[0] # 距离km
- wm_poi_score = shop_list['wm_poi_score'] # 评分
- trade_area = shop_list['trade_area'] # 商圈
- third_category = shop_list['third_category'] # 品类标签
- shipping_fee_tip1 = shop_list['shipping_fee_tip'] # 配送费折后
- try:
- shipping_fee_tip = shipping_fee_tip1.split ('¥')[1] # 配送费折后#shipping_fee_tip=配送 ¥5
- except:
- shipping_fee_tip = shipping_fee_tip1
- origin_shipping_fee_tip1 = shop_list[
- 'origin_shipping_fee_tip'] # 初始配送费origin_shipping_fee_tip=
- try:
- origin_shipping_fee_tip = origin_shipping_fee_tip1.split ('¥')[
- 1] # 初始配送费 # shipping_fee_tip=配送 ¥5
- except:
- origin_shipping_fee_tip = origin_shipping_fee_tip1
- average_price_tip1 = shop_list['average_price_tip']
- average_price_tip = average_price_tip1.split ('¥')[1] # 人均
- recommend_reason1 = []
- discounts21 = []
- str_1 = ';'
- try:
- for recommend_level_list in shop_list['recommend_level_list']:
- recommend_reason1.append (recommend_level_list['recommend_reason'])
- recommend_reason = str_1.join (recommend_reason1) # 点评标签
- except:
- recommend_reason = '无'
- for discounts2 in shop_list['poi_tags']:
- try:
- text_value = discounts2['sub_tags']['text']
- except:
- text_value = ''
- discounts21.append (text_value)
- discounts = str_1.join (discounts21) # 折扣满减
- indata = [tag_trade_area,trade_area, third_category, name, wm_poi_score, month_sales_tip,
- average_price_tip, min_price_tip, distance, origin_shipping_fee_tip,
- shipping_fee_tip, discounts, recommend_reason]
- # 商圈,品类标签,门店名称,评分,月售,人均,起送价,距离,原始配送费,折后配送费,折扣满减,点评标签
- # writer.writerows(n) # 写入样本数据
- writer_d.writerow (indata)
- except:
- try:
- title_1 = ["门店名称", "分类", "分类编码", "spu_id", "名称", "月售", "好评度", "折扣", "原价", "当前售价", "餐盒费", "文描"]
- with open(output_file + "/%s美团小程序单店菜单.csv" % str(time_str), 'a', newline='',
- encoding="utf-8-sig") as t: # encoding= "utf-8"
- writer = csv.writer(t) # 这一步是创建一个csv的写入
- writer.writerow(title_1) # 写入标签
- try:
- shop_name = data['d']['hr']['data']['data']['poi_info']['name']
- except:
- shop_name = file
- for list in data['d']['hr']['data']['data']['food_spu_tags']:
- name1 = list['name'] # 分类名
- name2 = list['product_count'] # 分类下商品数量
- for spus in list['dynamic_spus']: # 每有一个list都需要进行拆解,用for循环取值
- spuname = spus['name'] # 商品名称
- id = spus['id']
- description = spus['description'] # 文描
- try:
- like_ratio_desc_1 = spus['component_list']
- for like_ratio_desc_s in like_ratio_desc_1:
- if '好评度' in like_ratio_desc_s['view_data']:
- like_ratio_desc_d = json.loads(like_ratio_desc_s['view_data'])['text']
- try:
- like_ratio_desc = like_ratio_desc_d.split("度")[1]
- except:
- like_ratio_desc = like_ratio_desc_d
- break
- else:
- like_ratio_desc = ''
- except:
- like_ratio_desc = ''
- # month_saled_content_o = spus['month_saled_content'] # 月售
- # month_saled_content = month_saled_content_o.split("售")[1]
- month_saled_content = spus['month_saled'] # 月售
- # print(month_saled_content)
- try:
- for skus in spus['skus']:
- origin_price = skus['origin_price'] # 原价
- price = skus['price'] # 当前售价
- box_price = skus['box_price']
- promotion_info = skus['promotion_info'] # 折扣
- n = [shop_name, name1, name2, id, spuname, month_saled_content, like_ratio_desc,
- promotion_info, origin_price, price, box_price, description]
- writer.writerow(n) # 写入样本数据
- # print(n)
- except:
- print('出现错误')
- except Exception as e:
- # print(file, '无效',e)
- try:
- title_1 = ["门店名称", "分类", "分类编码", "spu_id", "名称", "月售", "好评度", "折扣", "原价", "当前售价", "餐盒费", "文描"]
- with open(output_file + "/%s美团小程序单店菜单.csv" % str(time_str), 'a', newline='',
- encoding="utf-8-sig") as t: # encoding= "utf-8"
- writer = csv.writer(t) # 这一步是创建一个csv的写入
- writer.writerow(title_1) # 写入标签
- try:
- shop_name = data['d']['hr']['data']['data']['poi_info']['name']
- except:
- shop_name = file
- for list in data['data']['food_spu_tags']:
- name1 = list['name'] # 分类名
- name2 = list['product_count'] # 分类下商品数量
- for spus in list['dynamic_spus']: # 每有一个list都需要进行拆解,用for循环取值
- spuname = spus['name'] # 商品名称
- id = spus['id']
- description = spus['description'] # 文描
- try:
- like_ratio_desc_1 = spus['component_list']
- for like_ratio_desc_s in like_ratio_desc_1:
- if '好评度' in like_ratio_desc_s['view_data']:
- like_ratio_desc_d = json.loads(like_ratio_desc_s['view_data'])['text']
- try:
- like_ratio_desc = like_ratio_desc_d.split("度")[1]
- except:
- like_ratio_desc = like_ratio_desc_d
- break
- else:
- like_ratio_desc = ''
- except:
- like_ratio_desc = ''
- # month_saled_content_o = spus['month_saled_content'] # 月售
- # month_saled_content = month_saled_content_o.split("售")[1]
- month_saled_content = spus['month_saled'] # 月售
- # print(month_saled_content)
- try:
- for skus in spus['skus']:
- origin_price = skus['origin_price'] # 原价
- price = skus['price'] # 当前售价
- box_price = skus['box_price']
- promotion_info = skus['promotion_info'] # 折扣
- n = [shop_name, name1, name2, id, spuname, month_saled_content,
- like_ratio_desc,
- promotion_info, origin_price, price, box_price, description]
- writer.writerow(n) # 写入样本数据
- # print(n)
- except:
- print('出现错误')
- except Exception as e:
- print(file, '无效', e)
- def goodsformV0(input_file,output_file,time_str):
- for a, b, files in os.walk(input_file, topdown=False):
- for file in files:
- path = str(input_file) + '/' + str(file)
- try:
- with open(path,"r",encoding= "utf-8") as f1:#导入json文件
- data = json.load(f1)
- # print(json.dumps(data,ensure_ascii = False))
- except:
- data = ''
- try:
- try:
- title_2 = ['目标商圈解析文件','商圈', '品类标签', '门店名称', '评分', '月售', '人均', '起送价', '距离', '原始配送费', '折后配送费', '折扣满减', '点评标签']
- with open(output_file + "/%s美团小程序商圈top门店.csv" % str(time_str), 'a', newline='',
- encoding="utf-8-sig") as t_d: # encoding= "utf-8"
- writer_d = csv.writer(t_d) # 这一步是创建一个csv的写入
- writer_d.writerow(title_2) # 写入标签
- tag_trade_area = file
- try:
- shop_lists = data['d']['hr']['data']['data']['poilist']
- except:
- shop_lists = data['data']['poilist']
- # for shop_list in data['d']['hr']['data']['data']['poilist']:
- for shop_list in shop_lists:
- name = shop_list['name']#门店名称
- month_sales_tip1 = shop_list['month_sales_tip']
- month_sales_tip = month_sales_tip1.split('售')[1]#月售
- min_price_tip1 = shop_list['min_price_tip']#起送价
- min_price_tip = min_price_tip1.split('¥')[1]##起送价min_price_tip=起送 ¥0
- distance1 = shop_list['distance']
- distance = distance1.split('k')[0]#距离km
- wm_poi_score = shop_list['wm_poi_score']#评分
- trade_area = shop_list['trade_area']#商圈
- third_category = shop_list['third_category']#品类标签
- shipping_fee_tip1 = shop_list['shipping_fee_tip'] # 配送费折后
- try:
- shipping_fee_tip = shipping_fee_tip1.split('¥')[1] # 配送费折后#shipping_fee_tip=配送 ¥5
- except:
- shipping_fee_tip = shipping_fee_tip1
- origin_shipping_fee_tip1 = shop_list['origin_shipping_fee_tip'] # 初始配送费origin_shipping_fee_tip=
- try:
- origin_shipping_fee_tip = origin_shipping_fee_tip1.split('¥')[1]# 初始配送费 # shipping_fee_tip=配送 ¥5
- except:
- origin_shipping_fee_tip = origin_shipping_fee_tip1
- average_price_tip1 = shop_list['average_price_tip']
- average_price_tip = average_price_tip1.split('¥')[1]#人均
- recommend_reason1 = []
- discounts21 = []
- str_1 = ';'
- for recommend_level_list in shop_list['recommend_level_list']:
- recommend_reason1.append(recommend_level_list['recommend_reason'])
- recommend_reason = str_1.join(recommend_reason1)#点评标签
- for discounts2 in shop_list['discounts2']:
- discounts21.append(discounts2['info'])
- discounts = str_1.join(discounts21)#折扣满减
- indata = [tag_trade_area,trade_area,third_category,name,wm_poi_score,month_sales_tip,average_price_tip,min_price_tip,distance,origin_shipping_fee_tip,shipping_fee_tip,discounts,recommend_reason]
- #商圈,品类标签,门店名称,评分,月售,人均,起送价,距离,原始配送费,折后配送费,折扣满减,点评标签
- # writer.writerows(n) # 写入样本数据
- writer_d.writerow(indata)
- except:
- title_2 = ['目标商圈解析文件','商圈', '品类标签', '门店名称', '评分', '月售', '人均', '起送价', '距离', '原始配送费', '折后配送费', '折扣满减',
- '点评标签']
- with open (output_file + "/%s美团小程序商圈top门店.csv" % str (time_str), 'a', newline='',
- encoding="utf-8-sig") as t_d: # encoding= "utf-8"
- writer_d = csv.writer (t_d) # 这一步是创建一个csv的写入
- writer_d.writerow (title_2) # 写入标签
- tag_trade_area = file
- for shop_list in data['data']['search_poi_list']:
- name = shop_list['name'] # 门店名称
- month_sales_tip1 = shop_list['month_sales_tip']
- month_sales_tip = month_sales_tip1.split ('售')[1] # 月售
- min_price_tip1 = shop_list['min_price_tip'] # 起送价
- min_price_tip = min_price_tip1.split ('¥')[1] ##起送价min_price_tip=起送 ¥0
- distance1 = shop_list['distance']
- distance = distance1.split ('k')[0] # 距离km
- wm_poi_score = shop_list['wm_poi_score'] # 评分
- trade_area = shop_list['trade_area'] # 商圈
- third_category = shop_list['third_category'] # 品类标签
- shipping_fee_tip1 = shop_list['shipping_fee_tip'] # 配送费折后
- try:
- shipping_fee_tip = shipping_fee_tip1.split ('¥')[1] # 配送费折后#shipping_fee_tip=配送 ¥5
- except:
- shipping_fee_tip = shipping_fee_tip1
- origin_shipping_fee_tip1 = shop_list[
- 'origin_shipping_fee_tip'] # 初始配送费origin_shipping_fee_tip=
- try:
- origin_shipping_fee_tip = origin_shipping_fee_tip1.split ('¥')[
- 1] # 初始配送费 # shipping_fee_tip=配送 ¥5
- except:
- origin_shipping_fee_tip = origin_shipping_fee_tip1
- average_price_tip1 = shop_list['average_price_tip']
- average_price_tip = average_price_tip1.split ('¥')[1] # 人均
- recommend_reason1 = []
- discounts21 = []
- str_1 = ';'
- try:
- for recommend_level_list in shop_list['recommend_level_list']:
- recommend_reason1.append (recommend_level_list['recommend_reason'])
- recommend_reason = str_1.join (recommend_reason1) # 点评标签
- except:
- recommend_reason = '无'
- for discounts2 in shop_list['poi_tags']:
- try:
- text_value = discounts2['sub_tags']['text']
- except:
- text_value = ''
- discounts21.append (text_value)
- discounts = str_1.join (discounts21) # 折扣满减
- indata = [tag_trade_area,trade_area, third_category, name, wm_poi_score, month_sales_tip,
- average_price_tip, min_price_tip, distance, origin_shipping_fee_tip,
- shipping_fee_tip, discounts, recommend_reason]
- # 商圈,品类标签,门店名称,评分,月售,人均,起送价,距离,原始配送费,折后配送费,折扣满减,点评标签
- # writer.writerows(n) # 写入样本数据
- writer_d.writerow (indata)
- except:
- ...
- def shopName(input_file,file_in):
- if 'response' in file_in:
- try:
- file_no = int(file_in.split('.')[0].split('_')[1]) + 1
- file = file_in.split('_')[0] + '_' + str(file_no) + '.txt'
- path = str(input_file) + '/' + str(file)
- # 读取文件
- try:
- with open(path, "r", encoding = "utf-8") as f1: # 导入json文件
- data = json.load(f1)
- except:
- data = ''
- try:
- shop_name = data['d']['hr']['data']['data']['poi_info']['name']
- except:
- shop_name = data['data']['poi_info']['name']
- except:
- file_no = int(file_in.split('.')[0].split('_')[1]) + 2
- file = file_in.split('_')[0] + '_' + str(file_no) + '.txt'
- path = str(input_file) + '/' + str(file)
- # 读取文件
- try:
- with open(path, "r", encoding = "utf-8") as f1: # 导入json文件
- data = json.load(f1)
- except:
- data = ''
- try:
- shop_name = data['d']['hr']['data']['data']['poi_info']['name']
- except:
- shop_name = data['data']['poi_info']['name']
- else:
- file_no = int(file_in.split('.')[0].split('_')[1]) - 1
- file = file_in.split('_')[0] + '_' +str(file_no) + '.txt'
- path = str(input_file) + '/' + str(file)
- # 读取文件
- try:
- with open(path, "r", encoding = "utf-8") as f1: # 导入json文件
- data = json.load(f1)
- except:
- data = ''
- try:
- shop_name = data['d']['hr']['data']['data']['poi_info']['name']
- except:
- shop_name = data['data']['poi_info']['name']
- return shop_name
- def productList(input_file,output_file,time_str,mode):
- writer = pd.ExcelWriter(output_file + f"/{str(time_str)}美团小程序单店菜单.xlsx")
- df_out_all = []
- for a, b, files in os.walk(input_file, topdown=False):
- for file in files:
- df_out = []
- path = str(input_file) + '/' + str(file)
- # 解析当前文件
- try:
- # 读取文件
- try:
- with open(path, "r", encoding = "utf-8") as f1: # 导入json文件
- data = json.load(f1)
- except:
- data = ''
- # 读取门店名称
- try:
- try:
- shop_name = data['d']['hr']['data']['data']['poi_info']['name']
- except:
- shop_name = shopName(input_file, file)
- except:
- shop_name = file.split('.')[0]
- # 读取门店商品列表
- try:
- goodsList = data['data']['food_spu_tags']
- except:
- goodsList = data['d']['hr']['data']['data']['food_spu_tags']
- for list in goodsList:
- name1 = list['name'] # 分类名
- name2 = list['product_count'] # 分类下商品数量
- for spus in list['dynamic_spus']: # 每有一个list都需要进行拆解,用for循环取值
- spuname = spus['name'] # 商品名称
- id = spus['id']
- description = spus['description'] # 文描
- try:
- like_ratio_desc_1 = spus['component_list']
- for like_ratio_desc_s in like_ratio_desc_1:
- if '好评度' in like_ratio_desc_s['view_data']:
- like_ratio_desc_d = json.loads(like_ratio_desc_s['view_data'])['text']
- try:
- like_ratio_desc = like_ratio_desc_d.split("度")[1]
- except:
- like_ratio_desc = like_ratio_desc_d
- break
- else:
- like_ratio_desc = ''
- except:
- like_ratio_desc = ''
- # month_saled_content_o = spus['month_saled_content'] # 月售
- # month_saled_content = month_saled_content_o.split("售")[1]
- month_saled_content = spus['month_saled'] # 月售
- # print(month_saled_content)
- try:
- for skus in spus['skus']:
- origin_price = skus['origin_price'] # 原价
- price = skus['price'] # 当前售价
- box_price = skus['box_price']
- promotion_info = skus['promotion_info'] # 折扣
- n = [shop_name, name1, name2, id, spuname, month_saled_content,
- like_ratio_desc,
- promotion_info, origin_price, price, box_price, description]
- df_out.append(n)
- df_out_all.append(n)
- except:
- print('出现错误')
- if mode == 'parts':
- df_out_e = pd.DataFrame(df_out,
- columns = ["门店名称", "分类", "分类编码", "spu_id", "名称", "月售", "好评度", "折扣", "原价",
- "当前售价", "餐盒费", "文描"])
- df_out_e.to_excel(writer, sheet_name = shop_name)
- except:
- shop_name = file.split('.')[0]
- print(f'{shop_name}文件有误')
- if mode == 'all':
- df_out_e = pd.DataFrame(df_out_all,columns = ["门店名称", "分类", "分类编码", "spu_id", "名称", "月售", "好评度", "折扣", "原价", "当前售价", "餐盒费", "文描"])
- df_out_e.to_excel(writer)
- writer.save()
- def userEvaluate(input_file,output_file,time_str):
- df_out = []
- for a, b, files in os.walk(input_file, topdown=False):
- for file in files:
- path = str(input_file) + '/' + str(file)
- with open(path,"r",encoding= "utf-8") as f1:#导入json文件
- data = json.load(f1)
- try:
- try:
- shop_data = data['d']['hr']['data']['data']
- except:
- shop_data = data['data']
- shop_id = 'ID'+str(shop_data['comments_dp']['wm_poi_id']) #店铺id
- comment_score = shop_data['comment_score'] #店铺分
- comments = shop_data['comments']
- for comment_data in comments:
- comment = str(comment_data['comment']).replace('\n',',') #评论内容
- user_id = comment_data['user_id'] #用户id
- user_name = comment_data['user_name'] #用户姓名
- wm_comment_id = comment_data['wm_comment_id'] #评论id
- order_comment_score = comment_data['order_comment_score'] # 订单评分
- order_time = datetime.fromtimestamp(comment_data['order_time']).strftime("%Y-%m-%d %H:%M:%S") # 下单时间
- comment_time = datetime.fromtimestamp(comment_data['comment_time']).strftime("%Y-%m-%d %H:%M:%S") # 评论时间
- spu_id_list = comment_data['spu_id_list'] # 商品id列表
- comment_scheme_list = comment_data['comment_scheme'] # 评论组合列表
- praise_food_list = comment_data['praise_food_list'] #喜好商品列表
- if len(spu_id_list) > 0:
- for spu_id in spu_id_list:
- sku_id = '无'
- keyword = '无'
- praise_memo = ''
- if len(comment_scheme_list) > 0:
- for comment_scheme in comment_scheme_list:
- if str(spu_id) == str(comment_scheme['spu_id']):
- keyword = comment_scheme['keyword'] #关键词
- sku_id = comment_scheme['sku_id'] #sku_id
- if len(praise_food_list) > 0:
- for praise_food in praise_food_list:
- if str(spu_id) in praise_food['schema_uri']:
- praise_memo = '赞'
- row = [shop_id, comment_score, wm_comment_id, order_time, comment_time, user_id, user_name,
- order_comment_score, spu_id, sku_id, keyword, praise_memo, comment]
- df_out.append(row)
- else:
- row = [shop_id, comment_score, wm_comment_id, order_time, comment_time, user_id, user_name,
- order_comment_score, '无', '无', '无', '无', comment]
- df_out.append(row)
- except Exception as e:
- print(e)
- df_out = pd.DataFrame(df_out,columns = ['店铺id','店铺分','评论id','下单时间','评论时间','用户id','用户姓名','订单评分','spu_id','sku_id','商品名称','点赞','评论内容'])
- df_out.to_excel(output_file+ "/%s美团小程序单店评论.xlsx" % str(time_str))
- if __name__ == '__main__':
- input_file = r"C:\Users\ClownHe\Desktop\导入\文件输入"
- output_file = r"C:\Users\ClownHe\Desktop\导入\输出"
- time_str = time.strftime("%Y%m%d%H%M%S", time.localtime())
- # goodsformV0(input_file,output_file,time_str)
- mode = 'all'
- productList(input_file, output_file, time_str, mode)
- # input_file = r"C:\Users\ClownHe\Desktop\导入\评论列表"
- # userEvaluate(input_file, output_file, time_str)
|