Dans Python 2.7 Shell, j'ai lancé les opérations suivantes:
$from googlefinance import getQuotes
$import json
$from urllib2 import urlopen
$print json.dumps(getQuotes('AAPL'), indent=2)
Message d'erreur obtenu sur la 4ème commande comme suit:
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
Pas sûr de ce qui se passe. Voici une image de mes activités.
Il semble que Google Finance ait modifié ses URL/points de terminaison et que le package googlefinance
n’ait pas été mis à jour pour refléter ce changement.
Étant donné que la plupart de ces modifications sont plutôt opaques pour les utilisateurs finaux (et que la bibliothèque que vous utilisez n'a pas été mise à jour depuis 2 ans), vous aurez peut-être plus de chance de gérer vous-même la réponse brute de Google Finance.
Vous pouvez récupérer des informations sur un symbole boursier particulier via l'URL suivante:
https://finance.google.com/finance?output=json&q=TICKER_SYMBOL
Google Finance renvoie les résultats JSON dans ce format
\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'
Il ne peut pas être chargé tel quel par l'analyseur JSON de Python car il est précédé de //
et enveloppe tout ce qui se trouve à l'intérieur de []
. Il comporte également des caractères d'échappement Unicode dans différentes chaînes qui doivent être décodées.
Je vais utiliser le module requests
pour cela, mais si vous voulez un exemple avec le module intégré urllib
, je peux également le montrer.
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']))
Cela donnerait:
Opening Price: 162.71
Price/Earnings Ratio: 18.43
52-week high: 164.94
52-week low: 102.53
Un code JSON complet contenant beaucoup plus de données que ce que je produis contient beaucoup plus de données, il vous appartient donc de décider de la manière dont vous souhaitez l’utiliser.
Alternativement, vous pouvez utiliser le module yahoo-finance
, qui est probablement moins susceptible d’avoir des problèmes de ce type, car Yahoo fournit toujours une véritable API Finance.
Si vous utilisez Python 3.6 ou 2.7, utilisez: Quandl https://www.quandl.com/ Utilisez WIKI, il semble être stable. Exemple : Apple = quandl.get ('WIKI/AAPL', start_date = "2016-12-31", end_date = "") Documents de série chronologique: https : //docs.quandl.com/docs/time-series-2 Si vous faites plus de 50 demandes, quandl nécessite une clé (libre d'utilisation)
Plusieurs informations sur les stocks fonctionnant sur ce noeud final avec l'ID stock Google
https://finance.google.com/finance/data?dp=mra&output=json&catid=all&cid=13564339,5904015