數據分析西甲聯賽,積分榜動態顯示

文章首發於公衆號:1024程序開發者社區

作爲一名資深球迷和二把刀程序員,一直想將數據分析用於足球比賽分析。年前有段時間,30年GDP動態變化圖着實讓人看着心潮澎湃。近期,五大聯賽都進入了爭冠的衝刺期,因此以西甲爲例,看一看動態積分排名和數據分析在足球聯賽中的應用。
按照慣例,先上圖(完整視頻見公衆號):
在這裏插入圖片描述文章主要分三個部分:

  1. 數據獲取;
  2. 動態顯示程序的使用;
  3. 其他西甲數據分析。

/1/數據獲取

網絡上實時的聯賽積分數據很容易找到,但是每一輪的歷史數據記錄極少,千辛萬苦,找到“一比分”網站,鏈接:https://data.13322.com/league-31/scjf.html。網頁截圖爲:
在這裏插入圖片描述
對網頁進行分析,必須通過點擊選擇“輪次”才能獲取該輪積分數據,這就使傳統的爬蟲方法失效了。
在這裏插入圖片描述
因此,調用“selenium”模擬瀏覽器進行登錄。

browser = webdriver.Chrome()
wait = WebDriverWait(browser ,10)

通過CSS_SELECTOR定位觸發輪次數據變化的位置,如圖:
在這裏插入圖片描述
定義觸發語句,並獲取當頁數據:

page = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,lst[i])))
page.click()
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#Standings')))
html1 = browser.page_source

通過BeautifulSoup對數據進行定位和提取:

for item in soup.find(id='Standings').find_all('tr'):
   result_cache = []
   for td in item.find_all('td'):
      result_cache.append(td.get_text().replace("‘", "").replace("’", ""))
   result_cache[15] = i+1
   print(result_cache)

最後調用xlwt,將結果數據寫入XLS文件中:

row = len(result)
col = len(result[0])
workbook = xlwt.Workbook('ascii')
worksheet = workbook.add_sheet('my_worksheet1')
for x in range(row):
   for y in range(col):
      worksheet.write(x, y, result[x][y])
workbook.save(r'西甲.xls')

/2/動態數據顯示

本文所使用動態排名數據可視化項目是jannchie建立的開源項目,基於D3.js。能夠將歷史數據排名轉化爲動態柱狀圖圖表。網址爲:
https://github.com/Jannchie/Historical-ranking-data-visualization-based-on-d3.js
在這裏插入圖片描述
使用方法,只需打開src目錄下的bargraph.html。然後點擊頁面中間的選擇文件按鈕,接着選擇csv格式的數據文件,便可以看到可視化的結果。
example有四個參數,name,type,value,date。根據爬取數據進行整理即可:
在這裏插入圖片描述
通過定義config.js和visual.js對顯示參數進行調整。如添加圖標路徑:
在這裏插入圖片描述
最終結果如開頭所示。

/3/其他數據分析
除做出積分動態變化圖外,還對其他數據進行分析。
1.聯賽勝率排行top10
在這裏插入圖片描述
巴薩不說了,皇馬和馬競的差別就在於防守。
2.聯賽進球排行top10
在這裏插入圖片描述
3.聯賽失球排行top10
在這裏插入圖片描述
對於武球王來說,好消息是球隊很能進球,壞消息是丟球也不少,目前收支還不平衡,期待武磊更好的表現。
在這裏插入圖片描述
4.積分變化和球隊人事調整的關係
在這裏插入圖片描述
在這裏插入圖片描述
從排名來看,洛佩特吉下課確實是戰績不佳,而救火隊長索拉里上任後,球隊戰績有明顯好轉,然而近期一波三連敗,將國王杯、歐冠葬送,聯賽奪冠也幾乎不可能。這對於皇馬這樣的頂級豪門來說是不能接受的,因此,齊玄宗又回來了:
在這裏插入圖片描述
(圖片來源:懂球帝APP)

關注公衆號,回覆“積分動態排名”獲取代碼和數據。
關注公衆號,送海量學習資源~
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章