запросы.получение и анализ ответа в json

#python #python-3.x #python-requests

#python #python-3.x #python-запросы

Вопрос:

В качестве заголовка я хочу «запросы.получение и анализ ответа на json». Вот способы, которыми я пытался это сделать

  1. Используя request().json()
 requests.get(url = "https://ac.dict.naver.com/linedictweb/ac?q=海amp;st=010amp;r_lt=000amp;q_enc=UTF-8amp;r_format=jsonamp;r_enc=UTF-8amp;_t=1599558293560amp;_callback=jQuery111104358648061767311_1599558261058amp;_=1599558261060",verify = True).json()
 =>Result: json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
  

2. Другой способ

 r = requests.get(url = "https://ac.dict.naver.com/linedictweb/ac?q=海amp;st=010amp;r_lt=000amp;q_enc=UTF-8amp;r_format=jsonamp;r_enc=UTF-8amp;_t=1599558293560amp;_callback=jQuery111104358648061767311_1599558261058amp;_=1599558261060",verify = True)
json.loads(r.content.decode('utf-8'))
=> RESULT: json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
  

Данные в формате Json здесь:

Помогите мне решить эту проблему. Спасибо

Комментарии:

1. Ответ не является допустимым JSON; это JSON, завернутый во что-то другое.

Ответ №1:

Обратный вызов jquery завершает вывод. Избавьтесь от параметра обратного вызова в URL, и вы получите действительный json:

 r = requests.get(url = "https://ac.dict.naver.com/linedictweb/ac?q=海amp;st=010amp;r_lt=000amp;q_enc=UTF-8amp;r_format=jsonamp;r_enc=UTF-8amp;_t=1599558293560",verify = True)


r.json()
{
  "query": [
    "u6d77"
  ],
  "items": [
    [],
    [
      [
        [
          "zh"
        ],
        [
          "597527adbb7248c3ae80d60b9acd7160"
        ],
        [
          "u6d77"
        ],
        [
          " ocean; extra large"
        ], 
    ...
}
  

Комментарии:

1. Ошибка выше была очевидной, но я этого не осознавал. Я только что удалил «_callback = jQueryxxx» из URL. Возможно, я слишком нервничал. Большое вам спасибо.