Morningstar xpath возвращаются пустыми в Google Sheet (импортированный контент пуст) - PullRequest
0 голосов
/ 22 марта 2020

Я пытаюсь вывести число со страницы Morningstar "Ca sh Flow" из произвольной биржи с использованием XPath. Я протестировал XPath на веб-сайте morningstar с помощью тестера XPath, и он вернул желаемые значения. Однако, когда я хочу использовать это значение в листе Google, он возвращает # N / A (Импортированный контент пуст.).

=IMPORTXML("http://financials.morningstar.com/cash-flow/cf.html?t=fb&region=usa&culture=en-US", "//div[@id='data_tts1']/div")

Я провел небольшое исследование по этому вопросу и выяснил, что данные на таких веб-сайтах генерируется динамически и загружается контент поэтапно, поэтому сначала необходимо загрузить страницу, чтобы можно было извлечь из нее какие-либо данные!

Мне интересно, есть ли какое-либо решение этой проблемы? Ваша помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

Это может быть возможно. Но вы должны подготовить специальный лист для извлечения данных. Используйте IMPORTDATA для анализа. json, который содержит данные:

http://financials.morningstar.com/ajax/ReportProcess4HtmlAjax.html?&t=XNAS:FB&region=usa&culture=en-US&cur=&reportType=cf&period=12&dataType=A&order=asc&columnYear=5&curYearPart=1st5year&rounding=3&view=raw&r=672024&callback=jsonp1585016592836&_=1585016593002

AFAIK, вы не можете напрямую импортировать версию .csv (указываются c заголовки, необходимые, так что curl или другие данные c потребуются инструменты).

http://financials.morningstar.com/ajax/ReportProcess4CSV.html?&t=XNAS:FB&region=usa&culture=en-US&cur=&reportType=cf&period=12&dataType=A&order=asc&columnYear=5&curYearPart=1st5year&rounding=3&view=raw&r=764423&denominatorView=raw&number=3

Поскольку это. json очень особенный (содержит html теги), я не думаю, что пользовательский скрипт для GoogleSheets может правильно его импортировать. Поэтому, как только. json будет загружен в GoogleSheets, ТРАНСПОЗИРУЙТЕ строки в столбцы и используйте формулы для определения местоположения ваших данных (например, укажите ячейки, которые содержат data_s1 и data_s2). Используйте CONCAT для объединения интересующих клеток. Затем разделите результат на столбцы (используйте специальный разделитель). Ищите нужные данные и очищайте результаты с помощью ЗАМЕНИТЕЛЯ. Метод грязный, но я думаю, что он может быть автоматизирован для всего процесса.

FB Data

0 голосов
/ 22 марта 2020

пусто, как и должно быть, потому что контент, который вы пытаетесь очистить, имеет JavaScript происхождение. Google Sheets не поддерживает импорт элементов JS. Вы всегда можете проверить это, отключив JS для данного сайта, и можно удалить только то, что осталось:

0

...