Использование ImportXML в Google Таблицах для импорта спортивных данных

Я пытаюсь импортировать данные ставок со следующего веб-сайта: https://www.pinnacle.com/en/odds/match/football/usa/nfl

Используя функцию Inspect в Chrome, я попытался определить точную ссылку на требуемые данные. Лучшее, что я могу сделать, это следующее:

=IMPORTXML(A5,"//td[@class='game-name name']/span")

Это дает мне несколько имен переменных, но нет данных.

В идеале я хотел бы импортировать данные таблицы со всеми соответствующими столбцами.

Кто-нибудь может помочь?

Таблицы значений загружаются отдельно с помощью Javascript после, загруженного базовой страницей. IMPORTXML не является браузером, он не выполняет никаких скриптов. Отключите Javascript, чтобы увидеть, что видит IMPORTXML. Посмотрите, предлагают ли они API вместо того, чтобы пытаться очистить свой сайт.

Tomalak 08.09.2018 07:23

Спасибо за ответ. Когда я отключаю Javascript, таблица не появляется, поэтому я не получаю никаких данных. Есть ли другой способ импортировать таблицу? Я видел, как в некоторых ответах используются сценарии, но, похоже, у меня нет никаких успехов с ними.

Darragh 08.09.2018 12:11
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
747
1

Ответы 1

Чтобы получить значения, которые используются для построения таблицы данных, внимательно осмотрите вкладку сети в инструментах разработчика (Chrome), и вы найдете вызов 889? Callback = angular.callbacks._0, который содержит значения в виде объекта JSON, обернутого функцией angular.

angular.callbacks._0({"ResponseTime":"2018-09-09T20:19:26Z","OddsType":"american","Leagues":[{"LeagueId":889,"SportId":15,"IsLive":false,"HasLiveLines":true,"Events":[{"EventId":841876318,"LeagueId":889,"SaveTime":"2018-09-10T03:15:47Z","DateAndTime":"2018-09-10T16:10:00Z","Cutoff":"2018-09-10T23:10:00Z","HoursAndMinutes":"16.10","PeriodNumber":0,"IsLive":false,"IsOffline":false,"LiveStatus":2,"Totals":{"OverPrice":104.0,"UnderPrice":-115.0,"Min":45.0},"IsHandicapEmpty":false,"IsMoneyLineEmpty":false,"IsTeamTotalsEmpty":false,"Participants":[{"Id":479,"Name":"New York Jets","Type":"Team1","Handicap":{"Price":-113.0,"Min":7.0},"MoneyLine":256.0,"TeamTotals":{"OverPrice":-110.0,"UnderPrice":-106.0,"Min":17.5},"IsDraw":false},{"Id":480,"Name":"Detroit Lions","Type":"T...

Есть несколько вариантов, чтобы добавить это в электронную таблицу Google. Самый простой, но не обязательно самый простой вариант - использовать редактор сценариев для получения строки ответа, извлечения строки JSON, а затем извлечения данных из объекта JSON. Вот отрывок, с которого можно начать:

function getJSON(aUrl,sheetname) {
  var aUrl = "https://www.pinnacle.com/webapi/1.17/api/v1/GuestLines/Deadball/15/889?callback=angular.callbacks._0";
  var response = UrlFetchApp.fetch(aUrl);
  var jsonString = response.getContentText().replace("angular.callbacks._0(", "").replace(");", "");
  Logger.log(jsonString);
  var dataAll = JSON.parse(jsonString); //
  var data = dataAll.Leagues["0"].Events;
  /*for (i in data){
    var overPrice = data[i].Totals.OverPrice;
    var underPrice = data[i].Totals.UnderPrice;
    var minPrice = data[i].Totals.Min;
    //
  }*/

  //funcs() to insert data into spreadsheet
}

Во-первых, вам нужно определить, что вы хотите получить от объекта; Я подозреваю, что данные, которые вы ищете, можно найти в dataAll.Leagues["0"].Events.

Следующим шагом будет вставка данных из ячеек таблицы объекта int. Вот образец, как это сделать.

Другие вопросы по теме

Строка "com.au" отображается как "(класс)" в редакторе скриптов
Попытка создать сценарий, который отправляет электронное письмо, если определенные ячейки / диапазоны на листе пусты
Нужно ли отлаживать кнопки в диалоге пользовательского интерфейса jQuery?
Необходимо найти массивы внутри массива контейнеров, который содержит определенный текст в его определенной позиции в скрипте приложений (предпочтительно) или скрипте Java
Скрипт Google Apps getRanges возвращает список с одним диапазоном
Фильтр в Google Таблицах с помощью APIv4 (Google Apps Script)
Скрипт приложения Google - OCR извлекает страницу входа в Google вместо нужного мне контента
На листе отправьте электронное письмо определенному получателю при заполнении ячейки
Скрипт приложений Google Apps с аутентификацией Запрос UrlFetchApp на Карты Google с использованием файлов cookie
Несколько сценариев onEdit, но появляется ошибка в строке 2