因为之前我们还抓取了球员本赛季的比赛详情,所以我们可以进一步的抓取所有球员每一场比赛的记录
抓取的代码如下
01 | def get_player_match(url): |
02 | html = urlopen(url).read() |
03 | soup = bs4.BeautifulSoup(html, "lxml" ) |
04 | matches = [ dd for dd in soup.select( '.shtdm tr' ) if dd.contents[ 1 ].name ! = 'th' ] |
06 | for item in [ dd for dd in matches if len (dd.contents) > 11 ]: |
08 | for match in [ dd for dd in item.contents if type (dd) is bs4.element.Tag]: |
10 | record.append(match.string) |
12 | for d in [ dd for dd in match.contents if type (dd) is bs4.element.Tag]: |
13 | query = dict ([(k,v[ 0 ]) for k,v in urlparse.parse_qs(d[ 'href' ]).items()]) |
14 | record.append( 'teamid' in query and query[ 'teamid' ] or query[ 'id' ]) |
15 | record.append(d.string and d.string or 'na' ) |
16 | records.append(record) |
19 | def get_players_match(playerlist, baseurl = BASE_URL + '/player.aspx?' ): |
21 | for item in playerlist: |
22 | url = baseurl + item[ 10 ] |
24 | result = result + get_player_match(url) |
26 | match_fields = [ 'date_cn' , 'homeid' , 'homename_cn' , 'matchid' , 'score' , 'awayid' , 'awayname_cn' , 'league_cn' , 'firstteam' , 'playtime' , 'goal' , 'assist' , 'shoot' , 'run' , 'corner' , 'offside' , 'foul' , 'violation' , 'yellowcard' , 'redcard' , 'save' ] |
27 | write_csv( 'm.csv' ,get_players_match(result),match_fields) |
抓取的过程和之前类似。
下一步做什么
现在我们拥有了详细的欧洲联赛的数据,那么下一步要怎么做呢,我推荐大家把数据导入BI工具来做进一步的分析。有两个比较好的选择:
Tableau在数据可视化领域可谓无出其右,Tableau Public完全免费,用数据可视化来驱动数据的探索和分析,拥有非常好的用户体验 Splunk提供一个大数据的平台,主要面向机器数据。支持每天免费导入500M的数据,如果是个人学习,应该足够了。
当然你也可以用Excel。 另外大家如果有什么好的免费的数据分析的平台,欢迎交流。 |