你缺少什麼是查詢的ENV部分:
import json
import urllib
from pprint import pprint
base_url = 'https://query.yahooapis.com/v1/public/yql?'
query = {
'q': 'select * from yahoo.finance.quote where symbol in ("YHOO","AAPL")',
'format': 'json',
'env': 'store://datatables.org/alltableswithkeys'
}
url = base_url + urllib.urlencode(query)
response = urllib.urlopen(url)
data = response.read()
quote = json.loads(data)
pprint(quote)
輸出:
{u'query': {u'count': 2,
u'created': u'2014-12-06T03:53:23Z',
u'lang': u'en-US',
u'results': {u'quote': [{u'AverageDailyVolume': u'38009400',
u'Change': u'+0.58',
u'DaysHigh': u'51.25',
u'DaysLow': u'50.51',
u'DaysRange': u'50.51 - 51.25',
u'LastTradePriceOnly': u'50.99',
u'MarketCapitalization': u'48.305B',
u'Name': u'Yahoo! Inc.',
u'StockExchange': u'NasdaqNM',
u'Symbol': u'YHOO',
u'Volume': u'15418123',
u'YearHigh': u'52.62',
u'YearLow': u'32.15',
u'symbol': u'YHOO'},
{u'AverageDailyVolume': u'57049800',
u'Change': u'-0.49',
u'DaysHigh': u'116.08',
u'DaysLow': u'114.64',
u'DaysRange': u'114.64 - 116.08',
u'LastTradePriceOnly': u'115.00',
u'MarketCapitalization': u'674.5B',
u'Name': u'Apple Inc.',
u'StockExchange': u'NasdaqNM',
u'Symbol': u'AAPL',
u'Volume': u'38318896',
u'YearHigh': u'119.75',
u'YearLow': u'70.5071',
u'symbol': u'AAPL'}]}}}
爲什麼它從YQL控制檯工作,沒有包膜的關鍵字?另外,在我的原始代碼中,我有env關鍵字和格式關鍵字,每個都用'&'分隔,稍微玩一下,原始問題的'修復'就是'&'周圍的空格。似乎沒有證件。我已經爲此工作了好幾天。非常感謝!仍然想知道爲什麼在我的代碼中需要env,但不是在控制檯上。 – Clayton 2014-12-06 04:20:06
我不知道爲什麼,要麼。我去了控制檯,並從那裏複製他們的URL,逆向工程師。 – 2014-12-06 04:21:33