python
  • yahoo-api
  • stockquotes
  • 2014-12-06 58 views 3 likes 
    3

    我已经使用yql控制台并收到了相应的响应。然而,发送一个基于python的查询,我仍然有一个错误。首先控制台示例:Python,yahoo yql报价错误

    select * from yahoo.finance.quotes where symbol in ("yahoo", "aapl") 
    

    我收到一个包含预期字段的结果块。蟒蛇例如:

    import requests 
    base_url = 'https://query.yahooapis.com/v1/public/yql?' 
    query = 'q=select * from yahoo.finance.quotes where symbol in ("YHOO", "AAPL")' 
    full_query=base_url + query 
    result = requests.get(full_query) 
    print(result.content) 
    

    有以下回应:

    B '发现\ n没有定义表yahoo.finance.quotes'

    我缺少什么? TIA, 克莱顿

    回答

    3

    你缺少什么是查询的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'}]}}} 
    
    +0

    为什么它从YQL控制台工作,没有包膜的关键字?另外,在我的原始代码中,我有env关键字和格式关键字,每个都用'&'分隔,稍微玩一下,原始问题的'修复'就是'&'周围的空格。似乎没有证件。我已经为此工作了好几天。非常感谢!仍然想知道为什么在我的代码中需要env,但不是在控制台上。 – Clayton 2014-12-06 04:20:06

    +0

    我不知道为什么,要么。我去了控制台,并从那里复制他们的URL,逆向工程师。 – 2014-12-06 04:21:33

    相关问题