如何将pytrends的related_queries结果转换为标准JSON格式?
把pytrends相关查询数据转成标准JSON的方法
问题本质
pytrends返回的related_queries_dict是嵌套结构,里面的top和rising都是DataFrame对象,直接转JSON会因为DataFrame的特殊格式失败,必须先把每个DataFrame转换成JSON兼容的列表/字典结构,再整体序列化。
完整实现步骤
- 遍历
related_queries_dict里的每个DataFrame,用df.to_dict('records')把DataFrame转成行字典组成的列表,这是JSON能识别的数组格式。 - 用Python内置的
json.dumps()把处理后的嵌套结构转换成标准JSON字符串。
可运行示例代码
from pytrends.request import TrendReq import json # 初始化请求 pytrend = TrendReq(hl='zh-CN', tz=8*60) # 设置关键词 pytrend.build_payload(kw_list=['人工智能']) # 获取相关查询数据 related_queries = pytrend.related_queries() # 处理数据:把每个DataFrame转成JSON兼容的列表 processed = {} for key, df in related_queries['人工智能'].items(): processed[key] = df.to_dict('records') # 生成标准JSON json_str = json.dumps(processed, indent=4, ensure_ascii=False) print(json_str)
关键函数解释
df.to_dict('records'):把DataFrame的每一行转成一个字典,所有行打包成列表,刚好对应JSON里的数组结构。json.dumps():负责把Python对象序列化成JSON字符串,indent=4用来格式化输出,ensure_ascii=False解决中文乱码问题。
踩坑提示
- 如果返回的
related_queries为空,检查关键词是否合法,或者调整build_payload里的时间范围(timeframe)、地域(geo)参数。 - 若DataFrame里有缺失值,
to_dict()会自动保留None,JSON序列化后变成null,符合标准格式。
内容的提问来源于stack exchange,提问作者Jsbeginner
相关产品推荐
相关产品推荐

