賈維斯的智慧工坊

  • Home
  • About
  • Note
  • Project
  • Experience
  • Service
  • Sitemap


MY | NOTES

  1. 首頁
  2. >
  3. 筆記
  4. >
  5. 運動分析

如何用 Python 下載台灣運彩賠率

即時下載籃球、棒球賠率(附爬蟲程式碼)
Apr, 2021

我們都聽過從賠率預測莊家看好的隊伍
因此如果能進一步以程式建模
或許有一些訊號可以分析
以下整理兩種用程式取得賠率的方式

更多精彩文章
分析賠率變化,用數學告訴你莊家賺錢的秘密
解密頂尖分析師勝率,運彩整賽季能贏多少?
運彩怎麼買才會賺?穩定獲利的「資金管理方法」
統計MLB運彩結果,原來星期X最常倒打、卡洞!
玩運彩勝率要多高?投注前必懂的獲利方程式

1、台灣運彩官網



網站:台灣運彩表單專區
內容:籃球或棒球賽事當下的賠率
方式:免費,使用爬蟲程式(過度頻繁會被封鎖)

執行爬蟲程式後,可以取得 basketball_games 及 baseball_games 兩個變數
其中包含所有已開盤聯盟的場次



各個比賽資訊如下:

  • away_handi:客場 - 讓分盤賠率
  • away_is_plus:客場是否為受讓方(+)
  • away_name:客場 - 隊伍名稱
  • away_normal:客場 - 不讓分盤賠率
  • big:大分賠率
  • date:比賽日期
  • game_time:比賽時間
  • handi:讓分值
  • home_handi主場 - 讓分盤賠率
  • home_name:主場 - 隊伍名稱
  • home_normal:主場 - 不讓分盤賠率
  • lottery_id:場次編號
  • small:小分賠率
  • sport:聯盟名稱
  • total:總分值

    完整程式碼見文末

    2、JBot API 台彩賠率走勢

    網站:JBot API 文件
    內容:NBA、MLB、NPB 的賠率走勢
    方式:呼叫API,每日免費20次

    如果使用 API,就可以下載近半年的所有賠率走勢
    從開盤到最後變化都有記錄,比較容易進行分析

    執行的方式如網站範例

    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)
    


    記得要更改至一個月內的日期
    從回傳的資料中,我們能看到 MLB 老虎這場
    開盤以後經過了兩次賠率變化
    客場讓分盤賠率從 1.9 → 1.8 → 1.7 調整
    這就是莊家對於勝率有所改變的訊號

    以上兩種方法分享給大家

    (台彩賠率爬蟲 - 完整程式碼)

    # -*- 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')
    




  • ← Back to note