requests.get(url).json(): ошибка JSONDecodeError: ожидаемое значение: строка 1 столбец 1 (символ 0)

#python #json #python-requests

#python #json #python-запросы

Вопрос:

Я попытался использовать json() запросов, но получил ошибку: JSONDecodeError: ожидаемое значение: строка 1 столбец 1 (символ 0). Мой код, как показано ниже:

 ################
import requests
url='https://www.google.com'
response= requests.get(url) 
print(response) 
print(response.content) 
r=response.json()
################
  

Я просмотрел темы по этой проблеме, но их решения не помогли устранить ошибку.

 <Response [200]>
text/html;charset=UTF-8
b'<!DOCTYPE html>rn rnrn<html xmlns="http://www.w3.org/1999/xhtml" xmlns:tcdl="http://www.tridion.com/ContentDelivery/5.3/TCDL"  class="no-js" lang="en">rnrnrnrnrn<head>rn    rn    <script nonce="de7946e9-7383-4cf6-9793-8cbe62df2d65">rn        document.documentElement.className = document.documentElement.className.replace(/(^|\s)no-js(\s|$)/, '$1$2');rn    </script>rn  
...
</script> nrnrnrn</body>rn</html>'

---------------------------------------------------------------------------
JSONDecodeError                           Traceback (most recent call last)
<ipython-input-3-c7a16189e451> in <module>
     7 print(response.headers.get('Content-Type'))
     8 print(response.content)
----> 9 r=response.json()
    10 # Making a GET request ,headers={'content-type':'application/json'}
    11 

~AppDataRoamingPythonPython37site-packagesrequestsmodels.py in json(self, **kwargs)
   896                     # used.
   897                     pass
--> 898         return complexjson.loads(self.text, **kwargs)
   899 
   900     @property

C:ProgramDataAnaconda3libjson__init__.py in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
   346             parse_int is None and parse_float is None and
   347             parse_constant is None and object_pairs_hook is None and not kw):
--> 348         return _default_decoder.decode(s)
   349     if cls is None:
   350         cls = JSONDecoder

C:ProgramDataAnaconda3libjsondecoder.py in decode(self, s, _w)
   335 
   336         """
--> 337         obj, end = self.raw_decode(s, idx=_w(s, 0).end())
   338         end = _w(s, end).end()
   339         if end != len(s):

C:ProgramDataAnaconda3libjsondecoder.py in raw_decode(self, s, idx)
   353             obj, end = self.scan_once(s, idx)
   354         except StopIteration as err:
--> 355             raise JSONDecodeError("Expecting value", s, err.value) from None
   356         return obj, end

JSONDecodeError: Expecting value: line 1 column 1 (char 0)
  

Пока это выглядит так, что request.get(url) возвращает хорошую информацию. , но response.json() выдал ошибку.
Я попытался принудительно ввести кодировку как r = resp.json (encoding= ‘utf-8-sig’), но не помогло, получил ту же ошибку.

Я также удалил simplejson и обновил модуль запросов, все та же ошибка. Я использую Python 3.7.1 Anaconda3 (64-битный), версия модуля запросов 2.24.0

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

1. print Результаты вверху ясно показывают, что вы получили HTML-документ, а не данные json. Неясно, как вы ожидаете response.json() , что результат будет выглядеть.

Ответ №1:

Привет, веб-сайт, который вы пытаетесь проанализировать с помощью запроса GET, является google.com который представляет собой HTML-документ. Когда вы это делаете response.json() , он пытается преобразовать html-документ в объект json, однако, поскольку ответ не имеет формата json, вы получите ошибку декодирования JSON!

Надеюсь, это поможет