Запросы Python: request.get(url).json() Ошибка

При попытке использовать запросы python я получаю следующее: когда я пытаюсь убедиться, что запрос находится в формате json. Запрос при использовании requests.get(url) будет <Response [200]>.

Однако при использовании request.get(url).json() я получаю следующее:

  File "/usr/local/lib/python3.6/json/__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "/usr/local/lib/python3.6/json/decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/local/lib/python3.6/json/decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Печать requests.get(url).headers дает следующее:

{'Server': 'nginx/1.10.3 (Ubuntu)', 'Date': 'Mon, 01 Apr 2019 21:03:28 GMT', 'Content-Type': 'text/html', 'Last-Modified': 'Mon, 25 Mar 2019 21:25:01 GMT', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'ETag': 'W/"5c99472d-806"', 'Strict-Transport-Security': 'max-age=63072000; includeSubdomains', 'X-Frame-Options': 'DENY', 'X-Content-Type-Options': 'nosniff', 'Content-Encoding': 'gzip'}

Я пробовал обрезать определенные символы, такие как <, >, \, \0, но это не повлияло на результат.

Заголовки сервера в вашем ответе показывают, что тип контента — text/html, а не application/json. Вы можете увидеть, что содержит тело, с помощью атрибута .content.

jordanm 01.04.2019 23:10

Да, как я могу изменить это на application/json?

lexalenka 01.04.2019 23:11

Ваш JSON, кажется, использует одинарные кавычки, попробуйте изменить тип контента на application/json, установите заголовок: Content-Type при обслуживании вашей страницы на application/json.

Preston Hager 01.04.2019 23:12

@PrestonHager это не json, это dict из запросов, представляющих заголовки ответов.

jordanm 01.04.2019 23:13

Как изменить тип контента?

lexalenka 01.04.2019 23:13

@jordanm ой, это так. Однако, учитывая, что ошибка находится на символе 0, вероятно, отсутствует скобка или кавычка.

Preston Hager 01.04.2019 23:15

чувак. Где URL?

Underoos 02.04.2019 08:51
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
7
5 440
1

Ответы 1

Ниже запрос должен работать.

import requests requests.get(URL, headers = {'content-type':'application/json'}).json()

вы также можете использовать json.loads() для ответа.

knyak 02.04.2019 15:59

Это дает тот же конечный результат: файл "/usr/lib/python3.5/json/__init__.py", строка 319, при загрузке возвращается файл _default_decoder.decode(s) "/usr/lib/python3.5/json/ decoder.py", строка 339, в decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/lib/python3.5/json/decoder.py" , строка 357, в raw_decode поднять JSONDecodeError («Ожидаемое значение», s, err.value) from None json.decoder.JSONDecodeError: Ожидаемое значение: строка 1, столбец 1 (char 0)

lexalenka 02.04.2019 23:06

Я вижу, что мой исходный тип контента — «test/html» даже после добавления headers = {'accept': 'application/json'} к моим аргументам request.get.

lexalenka 02.04.2019 23:07

Другие вопросы по теме