Obtener un componente del índice del mercado de valores de YQL
-
25-10-2019 - |
Pregunta
Actualmente, puedo obtener una cotización de existencias devolviendo XML y JSON usando Consola YQL me gusta
Seleccione símbolo, precio de csv donde url = 'http: //download.finance.yahoo.com/d/quotes.csv? S = ibm, yhoo, goog, msft & f = sl1d1t1c1ohgv & e = .csv' y columnas = 'símbolo, precio, precio , fecha, hora, cambio, col1, alto, bajo, col2 '
Me gustaría obtener la lista completa de componentes de
http://download.finance.yahoo.com/d/quotes.csv?s=@^hsi&f=sl1d1t1c1ohgv&e=.csv
Uso de la consola YQL, por lo que ingreso la declaración a continuación en la consola YQL
Seleccione símbolo, precio de csv donde url = 'http: //download.finance.yahoo.com/d/quotes.csv? s=@^hsi&f=sl1d1t1c1ohgv&e=.csv' y columns = 'símbolo, precio, fecha, hora, hora, hora, hora , cambio, col1, alto, bajo, col2 '
Pero decía que mi enlace no es válido. ¿Algún pensamiento y soluciones alterativas?
Solución
Su consulta era casi correcta, pero la URL se consideraba "inválida" como señaló. La solución es escapar correctamente de los valores de la cadena de consulta.
http://download.finance.yahoo.com/d/quotes.csv?s=@^HSI&f=sl1d1t1c1ohgv&e=.csv
convertirse en
http://download.finance.yahoo.com/d/quotes.csv?s=%40%5EHSI&f=sl1d1t1c1ohgv&e=.csv
Cambiar solo esos dos caracteres en sus valores codificados por %permite que YQL retire los datos de CSV.
select * from csv where url='http://download.finance.yahoo.com/d/quotes.csv?s=%40%5EHSI&f=sl1d1t1c1ohgv&e=.csv'
Aparte: A yql no le gusta que el CSV tenga una línea vacía al final del archivo, esto causará problemas cuando intente usar el columns
dónde cláusula. Si estás de acuerdo con las columnas llamadas col<number>
y quiero omitir la última fila (vacía) y luego usar and col8 is not null
Al final de su consulta.
Otros consejos
Esta es la URL correcta:
http://quote.yahoo.com/d/quotes.csv?s=u003Csymbol> & f = sl1d1t1c1ohgv & e = .csv
Para Coca Cola:
http://quote.yahoo.com/d/quotes.csv?s=ko&f=sl1d1t1c1ohgv&e=.csv
Resultado: "KO", 69.74, "9/2/2011", "4:00 pm",-0.71,69.7201,69.99,69.50,8765529
Para HSI:
http://quote.yahoo.com/d/quotes.csv?s=^Hsi & f = sl1d1t1c1ohgv & e = .csv
"^Hsi", 19616.40, "9/5/2011", "4:01 am",-596.51,19830.50,19830.50,19567.77,0
Aquí hay un documento API:
Las soluciones anteriores no responden completamente a la pregunta Desafortunadamente, solo obtendrá los primeros resultados 51-52 (la primera página) y no el índice completo.
No creo que esto sea posible en YQL sin procesar, pero deberá escribir algún código para obtener el HTML y luego recorrer cada página de componentes y crear su propia datos a partir de él.
He intentado algunas maneras y tengo un script de C# que puede hacerlo, también sería trivial hacer esto en Python y simplemente cargarlo en un marco de datos de Pandas a medida que avanza o simplemente una lista/tupla simple si lo desea es Los símbolos para construir una lista de componentes para probar una cartera contra.
Si las personas todavía están interesadas en esta solución, puedo publicar el enlace a él.