2017-07-21 4 views
0

Je développe une application de trading quantitatif qui sources d'informations financières de Yahoo Finance. Le code est donné ci-dessous. Ci-dessous je teste le code en choisissant un ticker et une période de temps que je veux les cotations boursières.url Python ne pas télécharger le fichier

from download import constructYFURL, download 
from datetime import datetime 
from time import time 

ticker = "NFLX" 

start_date = "2016-07-18" 

end_date = "2017-08-18" 

freq = "d" 

yFURL = constructYFURL(ticker, start_date,end_date,freq) 

print yFURL 

localFilePath = "/Users/Gebruiker/pytest/nflx.csv" 

download(localFilePath,yFURL) 

Ceci est l'URL résultant:

https://query1.finance.yahoo.com/v7/finance/download/NFLX?period1=1468800000&period2=1503014400&interval=1d&events=history&crumb=eVjSxKy2scr

L'erreur est donnée ci-dessous:

{ 
"finance": { 
    "error": { 
     "code": "Unauthorized", 
     "description": "Invalid cookie" 
    } 
    } 
} 

Process finished with exit code 0 

Il ne télécharge le fichier en cliquant sur le lien en utilisant mon navigateur, mais , est toujours me donne l'erreur et je ne peux pas trouver le fichier csv dans le référentiel que j'ai spécifié pour qu'il soit enregistré. Est-ce que quelqu'un peut m'aider? Je présume en utilisant un gestionnaire de la bibliothèque urllib2 python qui gère les cookies, je peux résoudre ce problème, mais je ne sais pas comment.

+0

Tout d'abord, essayez de corriger l'indentation, s'il vous plaît. –

+0

Pourquoi ne pas essayer avec la bibliothèque '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '. –

Répondre

1

Vous devez probablement être connecté pour avoir accès à cette URL.

Dans ce cas, vous devez avoir des cookies dans l'en-tête de votre demande, et ceux-ci sont générés pour vous lorsque vous vous connectez. Cela fonctionne dans votre navigateur parce que votre navigateur le gère pour vous.

Une façon de le faire est d'utiliser le module requests et son objet Session, qui gère automatiquement les cookies. Créez un Session, connectez-vous, puis vous devriez pouvoir l'utiliser pour accéder à votre URL.

+0

Je pense que cela résout le problème, cependant, je n'ai aucune expérience avec le module de demandes, pourriez-vous peut-être écrire comment générer le cookie? –

+0

@ JovanGligorević le cookie est généré automatiquement dans la session lorsque vous vous connectez à travers elle, pas besoin de s'inquiéter :) –

+0

Désolé, je n'ai pas trouvé d'explication de l'objet 'Session' dans le module docs on requests :(. un appel requests.session() Que faut-il faire exactement pour s'authentifier? –