Как очистить линии ставок НФЛ? - PullRequest
0 голосов
/ 16 ноября 2018

Я хотел бы очистить все линии / информацию о ставках НФЛ от https://www.bovada.lv/sports/football/nfl с помощью Python.

С помощью сообщества SO я нашел API для игр НФЛ: https://www.bovada.lv/services/sports/event/v2/events/A/description/football/nfl

Вы можете проверить дополнительную информацию относительно кода на моей вставке: https://pastebin.com/tmAenaBD

Вот мой код:

#Just a heads up...The code loads slow since it is printing the entire source

import requests 

source = requests.get("https://www.bovada.lv/services/sports/event/v2/events/A/description/football/nfl").json()

print(source)

Я вижу данныеоднако в коде я не знаю, как его анализировать.Любые предложения?

Информация о линии ставок, которую я ищу, включает в себя следующее для всех игр (всего 13 игр на этой неделе):

1) Дата игры

2) Время игры

3) Команды игры (две команды за игру)

4) Спред (с коэффициентами)

5) Win или "денежная линия" (с коэффициентами)

6) Всего aka"больше / меньше" (с коэффициентами)

Вот фотография первой игры:

enter image description here

Я хотел бы всеиз игр, если это возможно.

Я новичок в соскобе без опыта программирования.Я ценю любую помощь, которую я могу получить, и я благодарен за ваше время и усилия.

1 Ответ

0 голосов
/ 16 ноября 2018

Вы в значительной степени там.Вы нажали на его конечную точку и преобразовали источник в объект python (или коллекцию объектов python), что и делает .json().

Так что теперь вы ищете систематический способ доступа к даннымчто вы хотите, но вы не уверены в структуре данных ... так что самый простой способ обратиться к нему, это посмотреть на него.

Python имеет встроенную функциональность, чтобы помочь вам выяснить, какие объекты,Ваш лучший друг это функция type().Давайте посмотрим, что такое source:

>>> type(source)
<class 'list'>

Хорошо, поэтому источник - это список, поэтому мы можем проверить его длину:

>>> len(source)
1

ОК, так что этосписок только с одним элементом внутри.Что в этом списке?

>>> type(source[0])
<class 'dict'>

ОК, поэтому source - это list с одним dict внутри.Что dict должно быть там, где находятся все данные, давайте выделим их:

>>> data = source[0]

Python dict имеет несколько удобных функций, которые также позволяют проводить проверку.Для начала мы можем взглянуть на то, что keys из data:

>>> data.keys()
dict_keys(['path', 'events'])

Итак, всего 2 клавиши, одна называется path, а другая - events.Поскольку вы ищете информацию о ставках для каждой игры, давайте посмотрим на клавишу events, сначала мы посмотрим, что это такое:

>>> type(data['events'])
<class 'list'>
>>> len(data['events'])
13

ОК, предположительно список матчей НФЛ,к какому типу относится содержимое этого списка:

>>> set(type(e) for e in data['events'])
{<class 'dict'>}

Итак, все они dicts, имеют ли они одинаковую структуру?

>>> all(data['events'][0].keys() == e.keys() for e in data['events'][1:])
True

Да, все одинаковой структуры.Какова структура?

>>> data['events'][0].keys()
dict_keys(['id', 'description', 'type', 'link', 'status', 'sport', 'startTime', 'live', 'awayTeamFirst', 'denySameGame', 'teaserAllowed', 'competitionId', 'notes', 'numMarkets', 'lastModified', 'competitors', 'displayGroups'])

Опять же, вы должны знать, что все на самом деле, прежде чем вы сможете рассуждать об этом:

>>> for k, v in data['events'][0].items():
...     print(k, type(v))
...
id <class 'str'>
description <class 'str'>
type <class 'str'>
link <class 'str'>
status <class 'str'>
sport <class 'str'>
startTime <class 'int'>
live <class 'bool'>
awayTeamFirst <class 'bool'>
denySameGame <class 'bool'>
teaserAllowed <class 'bool'>
competitionId <class 'str'>
notes <class 'str'>
numMarkets <class 'int'>
lastModified <class 'int'>
competitors <class 'list'>
displayGroups <class 'list'>

Из этих ключей только два хранят коллекции какзначения competitors и displayGroups.Таким образом, любые рыночные данные должны содержаться в любом из них.

Я не собираюсь делать всю работу за вас, но я надеюсь, что вы поняли картину.Когда вы работаете с внешними источниками данных, которые не имеют никакой документации, систематически осматривайте объект, чтобы знать, с чем вы имеете дело.

...