Ваш запрос работал нормально. Однако, месяц или два назад, количество yahoo.finance YQL «таблиц» перестало работать.
IOW, вы делаете это правильно, но YQL сломан.
Если мышь над yahoo.finance.balancesheet
записи в левом столбце консоли YQL, кнопки помечены убывание и ЦСИ появляются. Если вы нажмете src, он выберет код для очистки: http://www.datatables.org/yahoo/finance/yahoo.finance.balancesheet.xml. Чтобы сделать текст E4X разборчивым, щелкните правой кнопкой мыши и выберите «Просмотр источника» или используйте wget
или curl
из командной строки.
Обратите внимание, что код выбирает http://finance.yahoo.com/q/bs?s=AAPL&quarterly, а затем использует запрос XPath для поиска данных:
var query = y.xpath(rawresult, "//table[@class='yfnc_tabledata1']/tr/td/table/tr");
Если вы принести page в ваш браузер и проверить HTML, вы обнаружите, что есть действительно table
с класс yfnc_tabledata1
. Однако он не имеет прямого дочернего элемента tr
. По-видимому, Yahoo, должно быть, решила добавить элемент tbody
. Вероятно, это объясняет, почему запрос больше не сбрасывает никаких данных.
На странице с кодом страницы Ryan Hoium в качестве автора. Небольшой поиск в Google приводит к github repository, где код живет вместе с кодом для других таблиц Yahoo Finance.
К сожалению, только yahoo.finance.sectors
стол получил последнее внимание. Изменение заключалось в том, чтобы добавить двойные слэши в выражение XPath. Двойные косые черты расслабляют требование «прямого ребенка», позволяя, например, tr
, все еще быть найденным, даже если есть промежуточный tbody
. Однако, похоже, новая версия не была вытолкнута на публичный сайт.
Действительно, я думаю, что это проблема, с которой они сталкиваются прямо сейчас. Но не знаю, когда это будет исправлено. Из своего репо (https://github.com/yql/yql-tables/tree/master/yahoo/finance) похоже, что никто не активно его обновлял –