Python разбор JSON из URL неполных - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь получить JSON по URL, который мне удалось сделать, но когда я печатаю результат, мне кажется, что я получаю только половину содержимого.

это то, что я написал:

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,

спасибо за помощь.

Ответы [ 2 ]

2 голосов
/ 31 марта 2020

Я думаю, что ваш вывод был обрезан вашей 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 голос
/ 31 марта 2020

Когда ответ большой, первое чтение может вернуть только то, что доступно в то время . Если вы хотите быть уверены, что у вас есть полные данные, вы должны l oop читать, пока не получите ничего (пустая байтовая строка здесь).

Здесь, вероятно, было бы более надежным передавать поток ответа на 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 должен был бы подавиться ими. Так что проблема, вероятно, в другом месте ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...