我尝试从成功的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,
感谢您的帮助。
我认为您的输出已被您的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)
当响应很大时,第一次读取只能返回当时可用的内容。如果您想确保拥有完整的数据,则应循环读取直到什么都没有得到(此处为空字节字符串)。
这里,将响应流传递到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
应该已经阻塞了。所以问题可能在其他地方...