# 運彩爬蟲資訊 ###### tags: `LINEBOT` [TOC] ## 目標網頁 若想要直接從運彩官網爬取相對繁雜。 由於賠率運動數據等都是即時更新,因此猜測會有個封包傳送至運彩網頁,而從網頁內找到了此API資訊。 2020年,API網址如下 ``` https://www.sportslottery.com.tw/api/services/app/LiveGames/GetLiveOnAndRegister?isContainRegister=false ``` 2021年,有天測試突然一直出現錯誤,後來發現是運彩官方的API改了,目前這個才能使用。 ``` https://blob.sportslottery.com.tw/apidata/Live/On.json ``` ## API分析 ### 2020 **2020年API內容如下** #### 沒有場中投注比賽 ```json= {"result":{"liveOn": [],"registerAll4Show":null},"targetUrl":null,"success":tr ue,"error":null,"unAuthorizedRequest":false,"__abp":true} ``` #### 有場中投注的比賽 ```json= {"result":{"liveOn": [{"id":256685,"no":2530,"kdt":1606903200000,"si":444,"cn" :["韓國","Korea Republic"],"li":12760,"ln":["南韓V聯 賽","Korea Republic V-League"],"atn":["韓國電力公社","Suwon Kepco"],"htn":["現代資本天行者","Cheonan Skywalkers"],"ms": [{"id":1,"no":1,"cs": [[{"id":402,"o":"1.08","p":1,"h":null,"l":false}, {"id":400,"o":"4.25","p":3,"h":null,"l":false}]],"m":1,"m a":8},{"id":6,"no":1,"cs": [[{"id":661,"o":"1.00","p":1,"h":null,"l":true}, {"id":619,"o":"1.00","p":3,"h":null,"l":true}], [{"id":654,"o":"1.60","p":1,"h":null,"l":false}, {"id":625,"o":"1.00","p":3,"h":null,"l":true}], [{"id":648,"o":"3.45","p":1,"h":null,"l":false}, {"id":630,"o":"4.30","p":3,"h":null,"l":false}]],"m":1,"m a":8}],"as": {"1":25,"2":19,"3":25,"4":13,"5":-1,"6":-1,"7":-1,"8":-1, "9":-1,"10":-1},"hs": {"1":16,"2":25,"3":21,"4":13,"5":-1,"6":-1,"7":-1,"8":-1, "9":-1,"10":-1},"gp": {"1":2,"2":2,"3":2,"4":1,"5":0,"6":0,"7":0,"8":0,"9":0,"1 0":0},"gi":4,"ed":" {\"Serve\":\"2\"}","lv":true,"l":false,"mi":24000869}],"r egisterAll4Show":null},"targetUrl":null,"success":true,"e rror":null,"unAuthorizedRequest":false,"__abp":true} ``` ### 2021 **2021年更新之後的內容如下,有稍微改動而已。** #### 沒有場中投注比賽 ```json= [] ``` #### 有場中投注比賽 ```json= [{"id":268495,"no":712,"kdt":1614096000000,"si":441,"cn" :["土耳其","Turkey"],"li":13586,"ln":["土耳其甲級聯賽","1. Lig"],"atn":["阿特諾度","Altinordu FK"],"htn":["阿勒泰體 育","Altay Izmir"],"ms":[{"id":1,"no":1,"cs": [[{"id":402,"o":"15.00","p":1,"h":null,"l":false}, {"id":401,"o":"4.50","p":2,"h":null,"l":false}, {"id":400,"o":"1.10","p":3,"h":null,"l":false}]],"m":1," ma":8},{"id":3,"no":1,"cs": [[{"id":472,"o":"2.10","p":1,"h":2.500,"l":false}, {"id":471,"o":"1.48","p":3,"h":2.500,"l":false}], [{"id":470,"o":"1.18","p":1,"h":1.500,"l":false}, {"id":469,"o":"3.35","p":3,"h":1.500,"l":false}], [{"id":474,"o":"4.75","p":1,"h":3.500,"l":false}, {"id":473,"o":"1.05","p":3,"h":3.500,"l":false}]],"m":1, "ma":8},{"id":4,"no":2,"cs": [[{"id":549,"o":"1.00","p":1,"h":null,"l":true}, {"id":550,"o":"3.35","p":2,"h":null,"l":false}, {"id":551,"o":"2.25","p":3,"h":null,"l":false}], [{"id":552,"o":"3.30","p":1,"h":null,"l":false}, {"id":553,"o":"7.00","p":2,"h":null,"l":false}, {"id":554,"o":"1.00","p":3,"h":null,"l":true}]],"m":1,"m a":8},{"id":4,"no":3,"cs": [[{"id":567,"o":"1.55","p":1,"h":null,"l":false}, {"id":568,"o":"1.90","p":2,"h":null,"l":false}, {"id":569,"o":"5.00","p":3,"h":null,"l":false}], [{"id":570,"o":"1.00","p":1,"h":null,"l":true}]],"m":1," ma":8},{"id":4,"no":4,"cs": [[{"id":563,"o":"1.00","p":1,"h":null,"l":true}, {"id":564,"o":"2.00","p":2,"h":null,"l":false}, {"id":565,"o":"1.80","p":3,"h":null,"l":false}], [{"id":566,"o":"3.05","p":1,"h":null,"l":false}]],"m":1, "ma":8},{"id":5,"no":1,"cs": [[{"id":597,"o":"1.68","p":1,"h":null,"l":false}, {"id":598,"o":"1.82","p":3,"h":null,"l":false}]],"m":1," ma":8},{"id":7,"no":1,"cs": [[{"id":405,"o":"3.46","p":4,"h":null,"l":true}, {"id":404,"o":"1.02","p":5,"h":null,"l":true}, {"id":403,"o":"1.00","p":6,"h":null,"l":true}]],"m":1,"m a":8},{"id":9,"no":1,"cs": [[{"id":609,"o":"2.60","p":1,"h":null,"l":false}, {"id":608,"o":"3.35","p":2,"h":null,"l":false}, {"id":607,"o":"1.75","p":3,"h":null,"l":false}]],"m":1," ma":8},{"id":16,"no":4,"cs": [[{"id":414,"o":"3.50","p":1,"h":null,"l":false}, {"id":413,"o":"2.25","p":2,"h":null,"l":false}, {"id":412,"o":"2.15","p":3,"h":null,"l":false}]],"m":1," ma":8},{"id":17,"no":2,"cs": [[{"id":417,"o":"1.37","p":1,"h":null,"l":true}, {"id":416,"o":"1.33","p":2,"h":null,"l":true}, {"id":415,"o":"1.10","p":3,"h":null,"l":true}]],"m":1,"m a":8}],"as": {"1":0,"2":-1,"3":-1,"4":-1,"5":-1,"6":-1,"7":-1,"8":-1, "9":-1,"10":-1},"hs": {"1":1,"2":-1,"3":-1,"4":-1,"5":-1,"6":-1,"7":-1,"8":-1, "9":-1,"10":-1},"gp": {"1":2,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0," 10":0},"gi":1,"ed":" {\"AllRemainingTime\":\"45\"}","lv":true,"l":false,"mi": 23312067}] ``` ### API 說明 | KEY | Value | |:---:|:--------:| | si | 球種 | | cn | 國家 | | ln | 比賽名稱 | | atn | 客隊名稱 | | htn | 主隊名稱 | | ms | 賠率 | | as | 客隊分數 | | hs | 主隊分數 | | lv | 動畫 | 因為每個球種的需要的資訊不一樣,因此可以先從球種去分類,之後也會比較好規劃個別顯示的畫面。 | 代號 | 球種 | | ---- | ----------- | | 441 | Soccer | | 442 | Baseketball | | 443 | Baseball | | 444 | Volleyball | | 445 | Tennis | ### 動畫 運彩有些比賽會有動畫顯示比賽情況,因此可先判定該場次是否有提供動畫。 若有動畫可以從==mi==獲取ID,提供以下網址顯示動畫。 ``` https://h2h.sportslottery.com.tw/sportradar/zht/h2h.html?matchID=24422300 ```