Историческая цена закрытия Yahoo Finance для таблиц Google возвращает н / д для закрытия позже 100 дней - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь распечатать историю c Скорректированные цены закрытия из Yahoo Finance в Google Таблицы.

=ImportXML("https://sg.finance.yahoo.com/quote/"&B57&"/history?p="&B57, "//tbody/tr[21]/td[6]")

Ячейка B57, например, "SPY".

Это отлично работает для исторических c цены до 100 дней. (здесь настраивается: tr[100])

Когда я пытаюсь узнать цены спустя 100 дней, возвращается "N / A". Эти цены видны на Yahoo Finance.

Есть ли способ настроить XPATH, что это работает?

Я заметил, что в коде html Yahoo цены около 100 дней не В теге tr нет этого "data-reactid = 1520".

Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 06 мая 2020

невозможно, потому что сайт yahoo использует элемент JavaScript - бесконечную прокрутку - который срабатывает после 100-го значения, и это причина, по которой вы не можете пройти через эту точку. вы можете проверить это, отключив JS для данного сайта, и то, что осталось, можно очистить:

0

0 голосов
/ 06 мая 2020

Это возможно с обходным решением:

YahooFinance

Более 100 дней:

YF2

  • Ячейка с зеленым фоном: код для поиска
  • Ячейки с оранжевым фоном: ячейки, содержащие формулы
  • Ячейки с желтым фоном: возвращенные данные

Используемые формулы:

=IMPORTXML(A1;"substring-before(substring-after(//script[@id='fc'],'{""prices"":'),',""isPending')")
=SUBSTITUE(SUBSTITUE(SUBSTITUE(A3;"},{";"|");",";";");".";",")
=REGEXREPLACE(A4;"[a-z:{}\[\]""]+";"")
=TRANSPOSE(SPLIT(A5;"|"))
=(((C8/60)/60)/24)+DATE(1970;1;1)
  • IMPORTXML для импорта данных.
  • SUBSTITUE И REGEXREPLACE для подготовки шага TRANSPOSE.
  • TRANSPOSE для «построения» строк и SPLIT для «построения» столбцов.
  • DATE для преобразования метки времени в дату.

Лист

0 голосов
/ 06 мая 2020

Ответ:

IMPORTXML не может получить данные, заполненные сценарием, поэтому использование этой формулы для извлечения данных из этой таблицы невозможно.

Дополнительная информация:

Поскольку первые 100 значений загружаются на страницу без использования JavaScript (как вы можете видеть, отключив JavaScript для https://sg.finance.yahoo.com/quote/SPY/history?p=SPY и перезагрузка страницы), информацию можно получить с помощью IMPORTXML.

Поскольку данные после первых 100 результатов генерируются на лету после прокрутки страницы, новые доступные данные не могут быть получены на IMPORTXML - насколько видно из формулы, нет 101 st <tr> элемента и поэтому отображается N/A: Imported content is empty.

Я знаю это в целом плохие новости, но я надеюсь, что это будет вам полезно!

Ссылки:

Связанные вопросы:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...