【问题标题】:JSONDecodeError Expecting value: line 2 column 5 (char 5)JSONDecodeError 期望值:第 2 行第 5 列(字符 5)
【发布时间】:2020-02-02 01:36:50
【问题描述】:

我在从 youtube 获取数据时遇到了 Jsonerror。 JSONDecodeError:预期值:第 2 行第 5 列(字符 5)。我的预期结果是 json。我能够从不同的 url url = 'https://api.github.com/repos/pandas-dev/pandas/issues' 获取。

我的代码在下面

import requests
youtuburl ='https://www.youtube.com/feed/trending'
response_youtuburl = requests.get(youtuburl)
response_youtuburl
#<Response [200]>

print(type(response_youtuburl))
#<class 'requests.models.Response'>

data_youtuburl = response_youtuburl.json()
print(type(data_youtuburl))

错误如下

JSONDecodeError                           Traceback (most recent call last)
<ipython-input-32-a8d1beb0b96c> in <module>()
----> 1 data_youtuburl = response_youtuburl.json()
      2 print(type(data_youtuburl))
~/anaconda3/lib/python3.6/site-packages/requests/models.py in json(self, **kwargs)
    890                     # used.
    891                     pass
--> 892         return complexjson.loads(self.text, **kwargs)
    893 
    894     @property
~/anaconda3/lib/python3.6/json/__init__.py in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
    352             parse_int is None and parse_float is None and
    353             parse_constant is None and object_pairs_hook is None and not kw):
--> 354         return _default_decoder.decode(s)
    355     if cls is None:
    356         cls = JSONDecoder
~/anaconda3/lib/python3.6/json/decoder.py in decode(self, s, _w)
    337 
    338         """
--> 339         obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    340         end = _w(s, end).end()
    341         if end != len(s):
~/anaconda3/lib/python3.6/json/decoder.py in raw_decode(self, s, idx)
    355             obj, end = self.scan_once(s, idx)
    356         except StopIteration as err:
--> 357             raise JSONDecodeError("Expecting value", s, err.value) from None
    358         return obj, end
JSONDecodeError: Expecting value: line 2 column 5 (char 5)

【问题讨论】:

    标签: python json python-requests


    【解决方案1】:

    您点击的 URL (https://www.youtube.com/feed/trending) 返回 HTML,而不是 JSON。

    【讨论】:

    • 我的方法是使用网络浏览器。一般来说,我想程序员在尝试在程序中使用它之前会知道 URL 是否返回 JSON。如果由于某种未知原因,您可以查看response_youtuburl.headers['content-type']。在这种情况下,它是'text/html; charset=utf-8'
    猜你喜欢
    • 2020-02-03
    • 2021-12-28
    • 2013-05-10
    • 2019-02-25
    • 2018-06-28
    • 1970-01-01
    • 2016-04-07
    • 2021-07-13
    相关资源
    最近更新 更多