Использование ImportXML в Google Sheets для импорта спортивных данных - PullRequest
0 голосов
/ 08 сентября 2018

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

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

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

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

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

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

1 Ответ

0 голосов
/ 10 сентября 2018

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

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 в электронную таблицу. Вот образец как это сделать.

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