Le téléchargement de plusieurs stocks à la fois à partir de yahoo finance python
J'ai une question à propos de la fonction de yahoo finance à l'aide de l'pandas lecteur de données. Je l'utilise maintenant depuis plusieurs mois une liste avec les bandeaux de cours de bourse et de l'exécuter dans les lignes suivantes:
import pandas_datareader as pdr
import datetime
stocks = ["stock1","stock2",....]
start = datetime.datetime(2012,5,31)
end = datetime.datetime(2018,3,1)
f = pdr.DataReader(stocks, 'yahoo',start,end)
Depuis hier, je reçois le message d'erreur "IndexError: list index out of range", qui n'apparaît que si j'essaie d'avoir plusieurs stocks.
A quelque chose de changé dans les derniers jours que j'ai à envisager ou avez-vous une meilleure solution pour mon problème?
OriginalL'auteur ScharcoMolten | 2018-04-07
Vous devez vous connecter pour publier un commentaire.
Si vous lisez à travers les Pandas DataReader est la documentation, ils ont émis un amortissement immédiat sur plusieurs source de données de l'API, qui est celui de Yahoo! Finances.
Cela pourrait être la cause de pourquoi vous avez été faire
IndexError
(ou de tout autre normalement, aucun existant erreurs).Cependant, il y a un autre paquet Python dont le but est de fixer le support pour Yahoo! Finances pour les Pandas DataReader, vous pouvez la trouver ici:
https://pypi.python.org/pypi/fix-yahoo-finance
En fonction de leur documentation:
Tout ce que vous devez ajouter est: est-ce
Ou même sans la nécessité de Pandas DataReader:
Le premier que vous avez mal orthographié, c'est
pdr_override
paspd_override
. Et pour la deuxième partie, il ne devrait pas être de toute erreur d'exécution de l'actuel de codes, quels sont les autres codes avez-vous été en cours d'exécution?Vous avez raison, mais ça n'a rien changé, bien que mon éditeur suggère pdr_override() , mais peu importe, cela fonctionne enfin avec la deuxième option, j'ai juste besoin de convertir ma série à une liste, mon mauvais. Merci pour votre soutien!
OriginalL'auteur abccd
Vous pouvez utiliser la nouvelle Python YahooFinancials module avec des pandas pour ce faire. YahooFinancials est bien construit et reçoit des données par le hachage de la banque de données de l'objet présent dans chaque Yahoo Finance page Web, de sorte qu'il est rapide et ne pas compter sur l'ancien abandonnées api ni un web pilote comme un grattoir. Les données sont renvoyées sous forme de JSON et vous pouvez tirer autant de stocks que vous voulez à la fois par le passage d'une liste de stock/index tickers pour initialiser le YahooFinancials Classe.
$ pip install yahoofinancials
Exemple D'Utilisation:
Plusieurs stocks de données à la fois exemple (retourne la liste des objets JSON pour chaque téléscripteur):
Sortie JSON Exemple:
Code:
JSON Retour:
Vous devez également ajouter que si vous commencez à utiliser ce module, vous pouvez soit espère qu'elle sera maintenue, ou sont prêts à le maintenir si besoin. En effet, Yahoo Financier pourrait modifier la structure de leurs pages web toute la journée, ce qui pourrait nécessiter une modification du module de grattage code.
D'accord. Tbh je suis prêt à maintenir le code au moins pour mon usage personnel en cas de besoin. C'est vraiment bien ficelé. Le responsable a adressé quelques questions et fermés, de sorte qu'il n'apparaît pas absent. Yahoo Finance semble avoir eu un massif de nouveaux le déploiement des applications web quand ils l'arrêt de leur API. Sur le dessus de que les champs semble directement à partir de la base de données. J'ai pas l'impression qu'elles changent les noms de champ de sitôt et frontend modifications ne sont pas l'effet de la module à moins qu'ils changent la web application framework ils sont utilisant. DBs sont habituellement seulement changé dans les versions majeures.
Aussi web pilotes sont gentils de ne pas me faire de mal. J'aime le sélénium + fantôme. Toutefois, le rendu des composants GUI vous de la ferraille sont plus susceptibles de changer, que le magasin de données variables en général, et un changement de nom de la solution d'une base de données renommée champ de (très rare), il est généralement plus facile à mettre en œuvre, puis d'écrire du nouveau code d'interagir avec de la ferraille et une nouvelle partie de l'application. Cette solution est également plus rapide que d'obtenir les données à partir d'un web grattoir à partir de mon expérience. Surtout quand c'est des données vous pouvez seulement de la ferraille par les boutons de pagination via le web pilote. Je soupçonne que ce module va être bien avec uniquement des corrections mineures pour ~3 ans
OriginalL'auteur alt777