Запрос Python возвращает ошибку декодера JSON

Я пытаюсь получить данные с веб-сайта. Я использую запрос Python:

users = requests.get('website name here', headers=headers).json()

Я получаю эту ошибку:

поднять JSONDecodeError("Ожидаемое значение", s, err.value) с None json.decoder.JSONDecodeError: Ожидаемое значение: строка 1 столбец 1 (char 0)

Я знаю, что данные, которые я извлекаю, это JSON, что является одной из проблем, с которыми другие люди сталкивались с этим сообщением об ошибке. Я предполагаю, что из-за того, что для доступа к сайту требуются имя пользователя и пароль, это дает мне эту ошибку. Может ли это быть? Если да, то как я могу это исправить? Я не хочу включать свою информацию для входа в свою программу Python.

Изменить: теперь я знаю, что проблема не в авторизации, потому что я создал токен авторизации, и у меня все еще возникает та же проблема.


person Jason000    schedule 25.09.2019    source источник
comment
Я знаю, что я извлекаю данные в формате JSON. Я не понимаю, что вы имеете в виду. Вы имеете в виду, что это на самом деле JSON, или вы имеете в виду, что это должно быть JSON, предполагая, что все работает как положено?   -  person John Gordon    schedule 25.09.2019
comment
Проверьте значение .text вместо .json(). Это почти наверняка недопустимый json. Если сайт требует входа в систему, то вы должны каким-то образом передать имя пользователя и пароль своей программе (если только сайт не предлагает альтернативный метод аутентификации, например, oauth).   -  person Alasdair    schedule 25.09.2019


Ответы (1)


request.get() возвращает объект ответа (Doc), а response.content будет иметь фактический ответ .

Я бы предложил попробовать:

import json
import requests

headers = {...}
response = requests.get('website name here', headers=headers)

try:
    users = json.loads(response.content)
except Exception as ex:
    print("Error getting response")
person Pranayjeet Thakare    schedule 25.09.2019
comment
Возможно, тогда ответ не является допустимым json. Попробуйте получить URL-адрес из браузера/почтальона и проверьте ответ на jsonformatter.curiousconcept.com. Это должно помочь вам понять, что не так. Приятного обучения! - person Pranayjeet Thakare; 01.10.2019