如何使用python从github正确下载json文件

Posted

技术标签:

【中文标题】如何使用python从github正确下载json文件【英文标题】:how to correctly download a json file from github using python 【发布时间】:2020-09-11 09:21:10 【问题描述】:

我正在尝试下载某个 github 存储库中托管的 json 文件。这是link。

问题是,当我尝试使用 python 解码 json 时,出现以下错误:

JSONDecodeError: Expecting value: line 1 column 1 (char 0)

这听起来像是不正确的 json 格式,所以当我在编辑器中手动打开文件时,我看到的是这样的:

这不是一个 json 文件,但这是应该的。相反,我得到了这个树形结构的文件。我需要使用pandas 将其加载到dataframe 中。有人可以在这里指出我正确的方向吗?我做错了什么?

这是我用来获取该文件的代码:

import urllib.request as r
from bs4 import BeautifulSoup as bs
import json

url = r.urlopen("https://raw.githubusercontent.com/aavail/ai-workflow-capstone/master/cs-train/invoices-2017-11.json")
content = url.read()
soup = bs(content)
newDictionary=json.loads(str(soup))

非常感谢您

【问题讨论】:

恭喜! 1000 代表。 谢谢@AnnZen! :D 【参考方案1】:

相反,我得到了这个树形结构的文件。

不,我保证你会得到一个 JSON 文件;)。树形结构的表示是您的浏览器,使文件看起来很漂亮。如果你curl -XGET -L <url>,你会看到一个 JSON 字符串。

Pandas 允许您直接从 URL 读取 JSON:

>>> import pandas as pd
>>> url = "https://raw.githubusercontent.com/aavail/ai-workflow-capstone/master/cs-train/invoices-2017-11.json"
>>> df = pd.read_json(url)
>>> df.head()
          country  customer_id invoice  price stream_id  times_viewed  year  month  day
0  United Kingdom      13085.0  489434   6.95     85048            12  2017     11   28
1  United Kingdom          NaN  489597   8.65     22130             1  2017     11   28
2  United Kingdom          NaN  489597   1.70     22132             6  2017     11   28
3  United Kingdom          NaN  489597   1.70     22133             4  2017     11   28
4  United Kingdom          NaN  489597   0.87     22134             1  2017     11   28

【讨论】:

以上是关于如何使用python从github正确下载json文件的主要内容,如果未能解决你的问题,请参考以下文章

如何运行和安装从 GitHub 网站下载的 python 包? [复制]

如何运行从 GitHub 下载的 Python 脚本?

如何从 AWS MWS API json 响应下载 .xlsx 文件?

如何在GitHub正确地使用 Curl 下载文件?

如何使用 JSON 正确读取 API 并创建列表?在 Python 中

如何在IDEA里正确导入从Github上下载的Gradle项目