我正在尝试运行此应用:
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'
答案 0 :(得分:0)
您正在请求当前不可用的资源(我看到的是504)。由于这可能在您请求远程服务时发生,因此请始终检查响应上的状态代码;这并不是说你的代码必然是错误的,在这种情况下,你假设响应是有效的JSON,而不检查请求是否成功。
检查urllib
documentation以查看如何执行此操作(或者,最好按照该页面顶部的建议使用requests
package代替)。
答案 1 :(得分:0)
该脚本在python2下无法工作,因为python2的urllib
没有请求模块。
如果您想在urllib.request
下开始运行该脚本,请使用urllib2.urlopen代替python2
。
要让python脚本在bith(python2
和python3
)上运行,请使用{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())