代码之家  ›  专栏  ›  技术社区  ›  Polta Lashka

python 2.7中googlefinance的HTTP错误404

  •  6
  • Polta Lashka  · 技术社区  · 7 年前

    在python 2.7 shell中,我运行了以下内容:

    $from googlefinance import getQuotes
    $import json
    $from urllib2 import urlopen
    $print json.dumps(getQuotes('AAPL'), indent=2)
    

    在第4个命令上收到错误消息,如下所示:

    Traceback (most recent call last):
      Python Shell, prompt 3, line 1
      File "C:\Users\mlashkar\_development\python\v2.7\Lib\site-packages\googlefinance\__init__.py", line 70, in getQuotes
        content = json.loads(request(symbols))
      File "C:\Users\mlashkar\_development\python\v2.7\Lib\site-packages\googlefinance\__init__.py", line 33, in request
        resp = urlopen(req)
      File "C:\Users\mlashkar\_development\python\v2.7\Lib\urllib2.py", line 154, in urlopen
        return opener.open(url, data, timeout)
      File "C:\Users\mlashkar\_development\python\v2.7\Lib\urllib2.py", line 435, in open
        response = meth(req, response)
      File "C:\Users\mlashkar\_development\python\v2.7\Lib\urllib2.py", line 548, in http_response
        'http', request, response, code, msg, hdrs)
      File "C:\Users\mlashkar\_development\python\v2.7\Lib\urllib2.py", line 473, in error
        return self._call_chain(*args)
      File "C:\Users\mlashkar\_development\python\v2.7\Lib\urllib2.py", line 407, in _call_chain
        result = func(*args)
      File "C:\Users\mlashkar\_development\python\v2.7\Lib\urllib2.py", line 556, in http_error_default
        raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
    urllib2.HTTPError: HTTP Error 404: Not Found
    

    enter image description here

    3 回复  |  直到 7 年前
        1
  •  13
  •   wkl    7 年前

    谷歌金融似乎修改了他们的URL/端点和 googlefinance 包尚未更新以反映更改。

    谷歌金融终结点

    https://finance.google.com/finance?output=json&q=TICKER_SYMBOL
    

    回应

    Google Finance以这种格式返回JSON结果

    \n// [\n{\n"symbol" : "AAPL",\n"exchange" : "NASDAQ",\n"id": "22144",\n"t" 
    : "AAPL",\n"e" : "NASDAQ",\n"name" : "Apple Inc."\n, "f_reuters_url" : 
    "http:\\x2F\\x2Fstocks.us.reuters.com\\x2Fstocks\\x2Fratios.asp?rpc=66\\x26symbol=AAPL.O",\n"f_recent_quarter_date" : "Q3 (Jul \\x2717)",\n"f_annual_date" : "2016",\n"f_ttm_date" : "2015",\n"financials" :
    
        ... a lot more stuff ...
    [\n]\n}]\n'
    

    Python的JSON解析器无法按原样加载它,因为它有前导 // ,并将一切包裹在里面 []

    完成代码和解析

    requests 模块,但如果您想要一个内置 urllib

    import json
    
    import requests
    
    rsp = requests.get('https://finance.google.com/finance?q=AAPL&output=json')
    
    if rsp.status_code in (200,):
    
        # This magic here is to cut out various leading characters from the JSON 
        # response, as well as trailing stuff (a terminating ']\n' sequence), and then
        # we decode the escape sequences in the response
        # This then allows you to load the resulting string
        # with the JSON module.
        fin_data = json.loads(rsp.content[6:-2].decode('unicode_escape'))
    
        # print out some quote data
        print('Opening Price: {}'.format(fin_data['op']))
        print('Price/Earnings Ratio: {}'.format(fin_data['pe']))
        print('52-week high: {}'.format(fin_data['hi52']))
        print('52-week low: {}'.format(fin_data['lo52']))
    

    这将输出:

    Opening Price: 162.71
    Price/Earnings Ratio: 18.43
    52-week high: 164.94
    52-week low: 102.53
    

    一个完整的代码JSON中包含的数据比我输出的要多得多,所以您可以决定如何使用其中的任何一个。

    选择

    或者,您可以使用 yahoo-finance 由于雅虎仍然提供一个真正的财务API,该模块可能不太可能出现这样的问题。

        2
  •  1
  •   ShaneCalder    7 年前

    https://www.quandl.com/ 苹果=quandl。get('WIKI/AAPL',start_date=“2016-12-31”,end_date=”) https://docs.quandl.com/docs/time-series-2 如果您发出超过50个请求,Quandl需要一个密钥(免费使用)

        3
  •  0
  •   Anish Manchappillil    7 年前

    使用谷歌股票ID在此端点上处理多个股票详细信息

    https://finance.google.com/finance/data?dp=mra&output=json&catid=all&cid=13564339,5904015