无法从网站的 .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 文件中导出特定数据的主要内容,如果未能解决你的问题,请参考以下文章