我們都聽過從賠率預測莊家看好的隊伍
因此如果能進一步以程式建模
或許有一些訊號可以分析
以下整理兩種用程式取得賠率的方式
import json
import requests
sport = 'MLB'
game_date = '2021-04-06' # 請更改至一個月內的日期
access_token = 'FREE_TEST_KEY_FOR_20_TIMES_PER_DAY'
endpoint = 'https://api.sportsbot.tech/odds_movements'
url = endpoint + '/' + sport + '/' + game_date
data = {'access_token': access_token}
response = requests.get(url, data=data)
result = json.loads(response.text)
# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
def crawl_odds(sport):
# Select soport
if sport == 'basketball':
page = '442'
elif sport == 'baseball':
page = '443'
else:
return None
# Request website
url = f'https://blob.sportslottery.com.tw/static/zh-tw/pregameodds/s-{page}.html'
r = requests.get(url)
r.encoding = 'utf-8'
soup = BeautifulSoup(r.text, 'html.parser')
table_list = soup.find_all('table')
game_dict = {}
# Parse table
for table in table_list:
date_str = table['data-kdt']
game_tr = table.find_all('tr')
for idx in range(2, len(game_tr), 2):
away = game_tr[idx].find_all('td')
home = game_tr[idx+1].find_all('td')
game = {}
game['date'] = date_str
game['game_time'] = away[0].text
game['lottery_id'] = away[1].text
game['sport'] = away[3].text
game['away_name'] = away[4].text
game['home_name'] = home[4].text
if away[5].text != '' and away[9].text != '':
game['away_normal'] = float(away[5].text)
game['home_normal'] = float(home[5].text)
game['handi'] = float(away[6].text[1:])
game['away_is_plus'] = away[6].text[0] == '+'
game['away_handi'] = float(away[7].text)
game['home_handi'] = float(home[7].text)
game['total'] = float(away[8].text[1:])
game['big'] = float(away[9].text)
game['small'] = float(home[9].text)
if game['sport'] not in game_dict:
game_dict[game['sport']] = []
game_dict[game['sport']].append(game)
return game_dict
basketball_games = crawl_odds('basketball')
baseball_games = crawl_odds('baseball')