Python:没有JSON对象可以被解码

时间:2016-03-11 03:27:20

标签: python json

我正在尝试运行此应用:

https://github.com/bmjr/guhTrends

python 2.7.x在命令行运行以下脚本。我估计它是用python3.x编写的。以下代码中弃用了什么?

import urllib
import json
import matplotlib.pyplot as plt

dates = urllib.request.urlopen('http://charts.spotify.com/api/tracks/most_streamed/global/weekly/')
dataDates = json.loads(dates.read().decode())

错误:

Traceback (most recent call last):
  File "DataMining.py", line 6, in <module>
    dates = urllib.request.urlopen('http://charts.spotify.com/api/tracks/most_streamed/global/weekly/')
AttributeError: 'module' object has no attribute 'request'

2 个答案:

答案 0 :(得分:0)

您正在请求当前不可用的资源(我看到的是504)。由于这可能在您请求远程服务时发生,因此请始终检查响应上的状态代码;这并不是说你的代码必然是错误的,在这种情况下,你假设响应是有效的JSON,而不检查请求是否成功。

检查urllib documentation以查看如何执行此操作(或者,最好按照该页面顶部的建议使用requests package代替)。

答案 1 :(得分:0)

该脚本在python2下无法工作,因为python2的urllib 没有请求模块

如果您想在urllib.request下开始运行该脚本,请使用urllib2.urlopen代替python2

要让python脚本在bith(python2python3)上运行,请使用{strong> Python 2和3兼容性库的six module

from six.moves import urllib
import json
import matplotlib.pyplot as plt

dates = urllib.request.urlopen('http://charts.spotify.com/api/tracks/most_streamed/global/weekly/')
dataDates = json.loads(dates.read().decode())