Obtenir composante de l'indice boursier de YQL
-
25-10-2019 - |
Question
À l'heure actuelle, je peux obtenir cours de bourse en retournant xml et JSON en utilisant YQL console comme
sélectionner le symbole, le prix de csv où url = 'http: //download.finance.yahoo.com/d/quotes.csv s = IBM, YHOO, GOOG, MSFT & f = sl1d1t1c1ohgv & e = .csv' et colonnes = » symbole, le prix, la date, l'heure, le changement, col1, haut, bas, col2'
Je voudrais obtenir la liste complète des composants de
http://download.finance.yahoo.com/d/quotes.csv?s=@^HSI&f=sl1d1t1c1ohgv&e=.csv
en utilisant la console YQL, donc entrée I la déclaration ci-dessous dans la console YQL
sélectionner le symbole, le prix de csv où url = 'http: //download.finance.yahoo.com/d/quotes.csv s=@^HSI&f=sl1d1t1c1ohgv&e=.csv' et columns = 'symbole, le prix, date, l'heure, le changement, col1, haut, bas, col2'
mais il a dit que mon lien est invalide. Toutes les pensées et les solutions altératives?
La solution
Votre requête a été presque correcte, mais l'URL a été considérée comme « invalide », comme vous l'avez dit. La solution est d'échapper correctement les valeurs de chaîne de requête.
http://download.finance.yahoo.com/d/quotes.csv?s=@^HSI&f=sl1d1t1c1ohgv&e=.csv
devient
http://download.finance.yahoo.com/d/quotes.csv?s=%40%5EHSI&f=sl1d1t1c1ohgv&e=.csv
Changer seulement ces deux personnages dans leur% des valeurs encodée permet YQL de retirer les données CSV.
select * from csv where url='http://download.finance.yahoo.com/d/quotes.csv?s=%40%5EHSI&f=sl1d1t1c1ohgv&e=.csv'
A part : YQL ne aime pas que le CSV a une ligne vide à la fin du fichier, cela entraînera des problèmes lorsque vous essayez d'utiliser la clause where columns
. Si vous êtes d'accord avec les colonnes ayant appelé col<number>
et veulent sauter la dernière ligne (vierge) puis utilisez and col8 is not null
à la fin de votre requête.
Autres conseils
Ceci est l'URL correcte:
http://quote.yahoo. com / d / quotes.csv? s =
Pour Coca Cola:
http://quote.yahoo.com/d /quotes.csv?s=KO&f=sl1d1t1c1ohgv&e=.csv
Résultat: "KO", 69,74, "9/2/2011", "16:00", - 0.71,69.7201,69.99,69.50,8765529
Pour HSI:
http://quote.yahoo.com/d/quotes.csv?s = ^ HSI & f = sl1d1t1c1ohgv & e = .csv
"^ HSI", 19616,40, "9/5/2011", "4:01", - 596.51,19830.50,19830.50,19567.77,0
Voici un document API:
Les solutions ci-dessus ne reçoivent pas une réponse complète à la question, malheureusement, vous ne les premiers résultats 51-52 (la première page), et non l'index complet.
Je ne pense pas que ce soit possible YQL brut, mais vous aurez besoin d'écrire du code pour obtenir le code HTML et boucle à travers chaque page de composants et de construire votre propre datatable contre elle.
J'ai essayé quelques moyens et un script C # qui peut le faire, il serait également trivial de le faire en Python et le charger dans une trame de données de pandas géants comme vous allez le long ou juste une simple liste / tuple si tous vous voulez est les symboles pour construire une liste de composants pour tester un portefeuille contre.
Si les gens sont toujours intéressés par cette solution, je peux poster le lien.