【问题标题】:Python parsing JSON from url incompletePython从url解析JSON不完整
【发布时间】:2020-03-31 13:31:26
【问题描述】:

我正在尝试从一个成功的 URL 获取 JSON,但是当我打印结果时,我似乎只得到了一半的内容。

这是我写的:

with urllib.request.urlopen("https://financialmodelingprep.com/api/v3/company/stock/list") as url:
    data = json.loads(url.read().decode())
    print(data)

我不会打印我得到的内容,因为它很长(如果您查看源代码并 ctrl+f 查找句子,您会发现它位于页面中间)但它以 ties Municipal Fund', 'price': 9.83,

感谢您的帮助。

【问题讨论】:

  • 我试图在 Jupyter 上运行你的代码,看来我可以打印整个 json。

标签: python json url


【解决方案1】:

我认为你的输出已经被你的 IDE 截断了。

当我运行相同的请求并将其写入文件时,您可以看到数据已完全写入:

import requests
with requests.get("https://financialmodelingprep.com/api/v3/company/stock/list") as url:
    data = url.content.decode()
    with open("file.txt","w") as f:
        f.write(data)

【讨论】:

    【解决方案2】:

    当响应很大时,第一次读取可能只返回当时可用的内容。如果你想确保有完整的数据,你应该循环读取直到你什么都没有(这里是一个空字节字符串)。

    在这里,将响应流传递给 json.load 并让它读取直到 json 字符串完成可能会更健壮:

    with urllib.request.urlopen(
            "https://financialmodelingprep.com/api/v3/company/stock/list") as url:
        data = json.load(url)
        print(data)
    

    但我认为,如果数据是不完整的,json.loads 应该会窒息。所以问题可能出在其他地方......

    【讨论】:

    • @bikoman57:这证明问题不在于负载部分,而在于显示部分......
    猜你喜欢
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    • 1970-01-01
    相关资源
    最近更新 更多