我正在尝试使用 Spotify API 抓取一些数据。当我搜索曲目名称“如果我不能”时,下面的代码可以正常工作并返回大量文本。API 输出的开头打印在我的网站上,如下所示:
除了开头的有趣的 b' 之外,它看起来像一本字典。我也不能像字典一样访问它。如果我尝试
返回原始数据['信息']
它引发了一个错误。同样,如果我试图找到它的类型(所以返回 type(raw_data) 而不是 return raw_data),页面会出现空白。
有没有办法以字典的形式保存 data.read() 的输出?使用
raw_data = ast.literal_eval(raw_data)
抛出一个错误。
#!/usr/local/bin/python3.2
# -*- coding: utf-8 -*-
import cherrypy
import numpy as np
import urllib.request
class Root(object):
@cherrypy.expose
def index(self):
a_query = Query()
text = a_query.search()
return '''<html>
Welcome to Spoti.py! %s
</html>''' %text
class Query():
def __init__(self):
self.qstring = '''if i can't'''
def space_to_plus(self):
'''takes the instance var qstring
replaces ' ' with '+'
-----------------------
returns nothing'''
self.qstring = self.qstring.replace(' ', '+')
def search(self):
self.space_to_plus()
url = 'http://ws.spotify.com/search/1/track.json?q=' + self.qstring
data = urllib.request.urlopen(url)
raw_data = data.read()
#return raw_data['info']
#return type(raw_data)
return raw_data
cherrypy.config.update({
'environment': 'production',
'log.screen': False,
'server.socket_host': '127.0.0.1',
'server.socket_port': 15850,
#'tools.encode.on': True,
#'tools.encode.encoding': 'utf-8',
})
cherrypy.config.update({'tools.sessions.on': True})
cherrypy.quickstart(Root())