Python从URL解析不完整的JSON

问题描述 投票:0回答:2

我尝试从成功的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,

感谢您的帮助。

python json url
2个回答
2
投票

我认为您的输出已被您的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)

1
投票

当响应很大时,第一次读取只能返回当时可用的内容。如果您想确保拥有完整的数据,则应循环读取直到什么都没有得到(此处为空字节字符串)。

这里,将响应流传递到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应该已经阻塞了。所以问题可能在其他地方...

© www.soinside.com 2019 - 2024. All rights reserved.