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?

¿Fue útil?

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:

http://www.gummy-stuff.org/yahoo-data.htm

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top