Текстовое значение импорта XML в Google Sheets отображаться не будет

#html #xpath #web-scraping #google-sheets #google-sheets-importxml

#HTML #xpath #очистка веб-страниц #google-sheets #google-sheets-formula

Вопрос:

Я пытаюсь импортировать некоторые данные об энергопотреблении в таблицу Google, но, похоже, не могу отобразить значение, поскольку это просто текст в строке HTML и отображается как -,— на выходе. Я попытался добавить /text() в XPath, но это тоже все еще не работает.

Веб-сайт с данными для импорта:

http://www.caiso.com/TodaysOutlook/Pages/default.aspx

Формула в Google Sheets:

=IMPORTXML("http://www.caiso.com/TodaysOutlook/Pages/default.aspx","//div[@class='overview-large-number']")

Также пробовал следующий Xpath с отображением того же -,— .

 /html/body/div[2]/div[3]/div[4]/div/div/div[2]/div/div[1]/div[1]/div[1]
/html/body/div[2]/div[3]/div[4]/div/div/div[2]/div/div[1]/div[1]/div[1]/text()
  

Снимок экрана веб-страницы:

Веб-страница Caiso с данными

HTML-элемент с данными:

 <div class="overview-large-number">41,946 <span>MW</span></div>
  

Снимок экрана текущего вывода Google Sheets:

Скриншот Google Sheets

Заранее благодарю вас за любую информацию.

Ответ №1:

Данные заполняются после загрузки страницы, поэтому вы не можете использовать ImportXML() . Данные запрашиваются через HTTP Get по URL http://www.caiso.com/outlook/SP/stats.txt и возвращаются в формате JSON.

  1. Получите скрипт ImportJSON из здесь и добавьте его в свой лист (Инструменты> Редактор сценариев).
  2. Этого должно быть достаточно, чтобы вы начали:
 =Transpose(ArrayFormula(HLOOKUP(
{"AvailableCapacity","CurrentSystemDemand","todayForecastPeakDemand","histDemand","TodaysPeakDemand","tomorrowsForecastPeakDemand"},
ImportJSON("http://www.caiso.com/outlook/SP/stats.txt"),2,0)))
  

Обратите внимание, что историческое пиковое значение уже является строкой, поэтому вам, возможно, придется проделать дополнительную работу, чтобы получить число.

Комментарии:

1. Большое вам спасибо. Я добавил файл сценария, и это решение сработало. Как вы узнали, где найти URL-адрес с запросом данных? И для моей справки, поскольку это был .aspx URL, именно так вы узнали, что потребуется запросить информацию за пределами текущей страницы?

2. @Cory Я открыл сетевой монитор в своем браузере (F12) и искал XHRS.