一、爬取的對象
NBA球員基本資料分析
資料來源:NBA中國官網
連結:http://china.nba.com/playerindex/

二、代碼如下:
在爬取過程中,隻根據html元素來爬取網站資料,隻能爬到第一頁資料。由于球員的資料是按照名字首字母分頁的,在點選其它首字母之後會顯示下一頁的資料,而且網址并沒有發生變化。
是以,需擷取JSON資料頁面連結:http://china.nba.com/static/data/league/playerlist.json
import requests #用于解析頁面文本資料
import pandas as pd
headers = {'User-Agent':user_agent}
url='http://china.nba.com/static/data/league/playerlist.json'
#解析網頁
res=requests.get(url,headers=headers).json()
num=int(len(res['payload']['players']))-1 #得到清單r['payload']['players']的長度
p1_cols=[] #用來存放p1數組的列
p2_cols=[] #用來存放p2數組的列
#周遊其中一個['playerProfile'],['teamProfile'] 得到各自列名,添加到p1_cols和p2_cols清單中
for x in res['payload']['players'][0]['playerProfile']:
p1_cols.append(x)
for y in res['payload']['players'][0]['teamProfile']:
p2_cols.append(y)
p1=pd.DataFrame(columns=p1_cols) #初始化一個DataFrame p1 用來存放playerProfile下的資料
p2=pd.DataFrame(columns=p2_cols) #初始化一個DataFrame p1 用來存放playerProfile下的資料
#周遊一次得到一個球員的資訊,分别添加到DataFrame數組中
for z in range(num):
player=pd.DataFrame([res['payload']['players'][z]['playerProfile']])
team=pd.DataFrame([res['payload']['players'][z]['teamProfile']])
p1=p1.append(player,ignore_index=True)
p2=p2.append(team,ignore_index=True)
p3=pd.merge(p1,p2,left_index=True,right_index=True) #資料合并
p3.to_csv('d://PyC//4.csv',index=False,encoding='utf_8_sig')
三、儲存資料為excel格式
四、資料分析
了解下基本的資料情況
NBA球員國籍'country'的情況
從爬出的資料不難發現,現役nba球員絕大部分是美國人。可想而知,美國本土的籃球文化是多麼的濃厚。其中,也有其它國家的球員。那麼我們可以從分析的資料中了解下其它國家的球員到底是誰....
西班牙籍球員:
法國籍球員:
原來爵士的内線高塔戈貝爾就是法國球員哦~
再來看下聯盟球員球衣号碼的數量統計
這樣就能輕易知道3号是聯盟球員選擇最多的号碼,那麼我們平時在自己球場上看到最多的會是3号嗎?
再來看下湖人隊的球員資料:
一條有趣的資料,聯盟裡有五個叫格林的人;其中最近大熱的西部半決賽火箭vs勇士,兩隊都有一個叫格林的球員。那麼到時候考驗解說能力的時候到了~~