#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()
Снимок экрана веб-страницы:
HTML-элемент с данными:
<div class="overview-large-number">41,946 <span>MW</span></div>
Снимок экрана текущего вывода Google Sheets:
Заранее благодарю вас за любую информацию.
Ответ №1:
Данные заполняются после загрузки страницы, поэтому вы не можете использовать ImportXML()
. Данные запрашиваются через HTTP Get по URL http://www.caiso.com/outlook/SP/stats.txt
и возвращаются в формате JSON.
- Получите скрипт ImportJSON из здесь и добавьте его в свой лист (Инструменты> Редактор сценариев).
- Этого должно быть достаточно, чтобы вы начали:
=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.