无法从网站的 .json 文件中导出特定数据

Posted

技术标签:

【中文标题】无法从网站的 .json 文件中导出特定数据【英文标题】:Unable to export particular data from a .json file from a website 【发布时间】:2019-10-30 15:33:23 【问题描述】:

我正在使用以下内容来解析来自网站的数据:

import requests
import pandas as pd

resp = requests.get("https://thisiscriminal.com/wp-json/criminal/v1/episodes?posts=1000000&page=1").json()
df = pd.DataFrame(resp['posts'], columns=['episodeNumber','slug','image','excerpt','audiosource'])    
df.to_csv("output9.csv", encoding='utf-8', index='false')

data = pd.read_csv("output9.csv")

如您所见,我不得不拉出整个“摘录”列,该列拉出所有三个而不是一个。我怎么会去说“短”的呢?标题是什么而不是“列”?此外,“标题”似乎没有在任何类型的标题下 - 我该如何拉这个呢?

如果有帮助,可以在这里快速查看 .json: https://www.dropbox.com/s/v9l81ber6i4nbgw/11111111.jpg?dl=0

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

我能想到的解决方法是规范化 resp['posts'] json 并且不提及列。下面是生成上述数据框的代码:

    import requests
    import pandas as pd
    from pandas.io.json import json_normalize

    resp = requests.get("https://thisiscriminal.com/wp-json/criminal/v1/episodes?posts=1000000&page=1").json()
    # print(resp['posts'][0])
    df = pd.DataFrame(json_normalize(resp['posts']))
    df.to_csv("output2_9.csv", encoding='utf-8', index='false')

现在,一旦你有了这个数据框,你就可以过滤你想要的列,它有所有的 json 字段和列名: audioSource 内容日期 episodeNumber excerpt.full excerpt.long excerpt.short id image.full image.large image.medium image.thumb musicCredits next next.slug next.title permalink prev prev.slug prev.title slug title

标题标题也存在于此数据框中

【讨论】:

【参考方案2】:

我采用了excerpt 系列,称为apply 函数并采用了从apply 创建的“短”系列。您可能需要处理额外的双引号,请考虑以下代码:

import requests
import pandas as pd

resp = requests.get("https://thisiscriminal.com/wp-json/criminal/v1/episodes?posts=1000000&page=1").json()
df = pd.DataFrame(resp['posts'], columns=['episodeNumber','slug','image','excerpt','audioSource'])    
df['excerpt'] = df['excerpt'].apply(pd.Series)['short']#.replace('"': '\'','""': '\'','"""': '\'' , regex=True)
df.to_csv("output9.csv", encoding='utf-8', index='false')
data = pd.read_csv("output9.csv")

【讨论】:

这太棒了,非常感谢!您知道如何插入“标题”部分吗?它与剧集描述或图像不在同一列格式下?当我使用 .json 查看器时,显示方式不同。 我不明白,如果你想要标题,你可以在columns 中添加title,就像df = pd.DataFrame(resp['posts'], columns=['title','episodeNumber','slug','image','excerpt','audioSource']) 或者如果你在谈论prev,那么你可以使用相同的我在excerpt 的答案中使用的代码

以上是关于无法从网站的 .json 文件中导出特定数据的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Web 矩阵中导出 wordpress 数据库

从 Django 数据库中导出数据

从钥匙串“我的证书”中导出 p12 文件

405 在 django 中导出 CSV 文件

是否可以 module.exports 从异步函数中导出局部变量?

如何从 wp json rest api 获取特定数据