Получение компонента индекса фондового рынка от YQL - PullRequest
2 голосов
/ 05 сентября 2011

В настоящее время я могу получить котировку акций, возвращая xml и json, используя консоль YQL как

выберите символ, цена из csv, где url = 'http://download.finance.yahoo.com/d/quotes.csv?s=IBM,YHOO,GOOG,MSFT&f=sl1d1t1c1ohgv&e=.csv' и столбцы =' символ, цена, дата, время, изменение, col1, максимум, минимум, col2 '

Я хотел бы получить полный список компонентов от

http://download.finance.yahoo.com/d/quotes.csv?s=@^HSI&f=sl1d1t1c1ohgv&e=.csv

с использованием консоли YQL, поэтому я ввожу приведенный ниже оператор в консоль YQL

выберите символ, цена из csv, где url = 'http://download.finance.yahoo.com/d/quotes.csv?s=@^HSI&f=sl1d1t1c1ohgv&e=.csv' и столбцы =' символ, цена, дата, время, изменение, col1, максимум, минимум, col2 '

но там сказано, что моя ссылка недействительна. Есть мысли и альтернативные решения?

Ответы [ 3 ]

3 голосов
/ 07 сентября 2011

Ваш запрос был почти верным, но, как вы заметили, URL-адрес считался недействительным.Решение состоит в том, чтобы правильно экранировать значения строки запроса.

http://download.finance.yahoo.com/d/quotes.csv?s=@^HSI&f=sl1d1t1c1ohgv&e=.csv

становится

http://download.finance.yahoo.com/d/quotes.csv?s=%40%5EHSI&f=sl1d1t1c1ohgv&e=.csv

Изменение только этих двух символов в их% -кодированные значения позволяет YQL получать данные CSV.

select * from csv where url='http://download.finance.yahoo.com/d/quotes.csv?s=%40%5EHSI&f=sl1d1t1c1ohgv&e=.csv'

В стороне : YQL не нравится, что CSV имеет пустую строку в конце файла, это вызовет проблемы при попытке использовать columns где пункт.Если у вас все в порядке с наличием столбцов с именем col<number> и вы хотите пропустить последнюю (пустую) строку, тогда используйте and col8 is not null в конце вашего запроса.

0 голосов
/ 20 января 2014

К сожалению, приведенные выше решения не дают полного ответа на вопрос, вы получите только первые 51-52 результаты (первая страница), а не полный индекс.

Я не думаю, что это возможнов сыром YQL, но вам нужно будет написать некоторый код, чтобы получить HTML, а затем перебрать каждую страницу компонентов и создать свой собственный набор данных из него.

Я пробовал несколько способов и у меня есть сценарий C #, которыйможет сделать это, это также было бы тривиально сделать это в Python и просто загрузить его в dataframe pandas по ходу дела или просто простой список / кортеж, если все, что вам нужно, это символы для построения списка компонентов для тестирования портфеляпротив.

Если люди все еще заинтересованы в этом решении, я могу опубликовать ссылку на него.

0 голосов
/ 05 сентября 2011

Это правильный URL:

&f=sl1d1t1c1ohgv&e=.csv" rel="nofollow">http://quote.yahoo.com/d/quotes.csv?s=&f=sl1d1t1c1ohgv&e=.csv

для кока-колы:

http://quote.yahoo.com/d/quotes.csv?s=KO&f=sl1d1t1c1ohgv&e=.csv

Результат: "KO", 69,74, "02.09.2011", "16:00", - 0,71,69,7201,69,99,69,50765529

Для 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

Вот документ API:

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

...