

最近有小伙伴想要获取京东商品目录,然后保存成右侧这个excel数据格式。目录的数据倒是很容易获取,但是要保存成右侧excel的数据格式,就有点犯难了。

获取京东商品目录直接请求下面这个网址就可以获取全部数据,取getCategoryCallback里面的文本就可以获取京东完整的目录json数据。
https://dc.3.cn/category/get?&callback=getCategoryCallback
经过格式化后,呈现的json数据效果如下:

要把json数据按照其商品目录层级结构逐列递进写入到excel中,需要解决2个问题
解决方法:通过正则匹配和替换掉不需要的链接地址
解决方法:通过pandas或第三方工具或平台来实现数据转换
(感谢@鹿秋夏 更优化的匹配方法🫰🩷)
[a-zA-Z0-9.-]+[\.\/][^\s|]+
\|\d?
问了AI要了代码,简单封装后运行,实现是可以实现,不过实现的效果一言难尽~,效果如下图:



😂转换效果真的不堪入目!
简单搜索了下网络,测试了几个不同的平台后,发现ASPOSE平台的转换效果最好,而且是免费的,关键是请求都没有加密,可以直接拿到接口,转成API直接调用也没问题哈~
https://products.aspose.app/cells/zh/convert-json-to-excel

看了下该网站的请求后,做了几次调试后,让AI优化了下代码,就可以直接拿来用了!
import requests
import time
def json2excel(json_data):
"""
将 JSON 数据转换为 Excel 文件并返回下载链接。
Args:
json_data: 要转换的 JSON 数据 (字符串格式)。
Returns:
转换后的 Excel 文件的下载链接,如果转换失败则返回 None。
"""
url = "https://api.products.aspose.app/cells/conversion/api/ConversionApi/Convert?outputType=XLSX"
payload = {
"MultipleWorksheets": "true",
"ConvertNumericOrDate": "true",
"ArrayAsTable": "true",
"UploadOptions": "json"
}
timestamp = str(int(time.time()))
files = {
timestamp: (
'convert.json',
json_data,
'application/octet-stream'
)
}
headers = {
'accept': '*/*'
}
response = requests.post(url, headers=headers, data=payload, files=files)
if response.status_code == 200:
try:
response_data = response.json()
folder_name = response_data.get("FolderName")
file_name = response_data.get("FileName")
if folder_name and file_name:
download_url = f"https://api.products.aspose.app/cells/conversion/api/Download/{folder_name}?file={file_name}"
return download_url
else:
print("无法获取 FolderName 或 FileName")
return None
except ValueError:
print("响应结果不是有效的 JSON 格式")
return None
else:
print("请求失败:", response.status_code)
return None
if __name__ == '__main__':
# 示例用法:
json_data='{"id":1,"name":"肉","detailsDto":[{"id":2859,"foodFourName":"羊肉","detailsColumn":"[性味]|[归经]|[功能]|[适用]","detailsContent":"性热。味甘。|脾、肾|暖中补虚,补中益气,开胃健力|1.虚劳恶冷2.五劳七伤"}]}'
download_link = json2excel(json_data)
if download_link:
print("下载链接:", download_link)直接扔给”魔法指令“,就可以直接生成转换指令拉,传入json文本数据,就可以返回excel文件的下载链接拉!
