想法来源:虎扑体育app中有个游戏叫做“每日范特西”,此游戏给于NBA每位球员一个与他能力(数据)相符的身价,玩家的任务是给定金额120,根据每位球员的身价以及位置组建一个自己的阵容(阵容总价不能大于120),之后根据当天每位球员的数据表现,来得出当天的真实评分。每位玩家的任务就是组建一套120以下的阵容,以达到阵容的真实评分最大值。真实评分公式如下:
使用工具:最近接触了python比较多,也算是重拾了1年多前的知识,主要是利用了bs4模版。
实现目标:把NBA每天比赛的球员数据按文件夹放在本地,并计算出他的范特西球员评分。
步骤:
- 抓取的NBA数据来源于http://sports.yahoo.com/nba/scoreboard/ 这个网站,网址后面加入日期,就是为当天的比赛场次信息,如(http://sports.yahoo.com/nba/scoreboard/?dateRange=2017-02-27)
- 利用requests.get函数得到网址的html代码,再利用bs4对代码进行解析。
data = requests.get(allurl)
bsdata = BeautifulSoup(data.text, 'lxml')`
3.之后在浏览器中对原网址按下F12,得到当天的每场的子网页,如图:
可知整个比赛场次的板块是在class名为’Mb(0px)’的div标签下,之后在此标签下找到所有a标签,因为超链接和文本都存在a标签中。
game_list = bsdata.find('ul', class_='Mb(0px)').find_all('a')
4.得到game_list后,对每个a标签里的内容进行筛选,因为里面的a标签还可能是回放的链接:
for game in gamelist:
tarurl = game['href']
if tarurl.find('/nba') == -1:
gamelist.remove(game)
5.筛选之后,得到场次的链接和标题,之后再利用requests和bs4,对每场的链接进行同样的方法,之后再对所要的数据进行分析:
为class名为match-stats的div标签下
6.之后我分析出名字是位于a标签