今天跟大家唠唠我搞的这个英超积分排名的小玩意儿,一开始就是图个乐呵,想自己没事儿也能盯着看看,谁知道越搞越上瘾,现在基本每天都得瞅两眼。
我是手动更新,就找个体育网站,一场一场比赛的看结果,然后自己算积分,再用Excel排个序。那叫一个费劲! 尤其是周末比赛多的时候,眼睛都看花了,而且还容易出错,经常算错分,被朋友吐槽。
后来我就琢磨,这不行,得想个法子偷懒。就开始琢磨用Python写个爬虫,自动抓取数据。这对我来说可是个挑战,之前都是用Java的,Python也就是听说过。没办法,硬着头皮开始学呗。
先是找了个教程,跟着学了点requests库,这玩意儿用来发送网络请求,获取网页内容,简直神器!然后又学了BeautifulSoup,用来解析HTML,把网页上乱七八糟的东西提取出来。这俩加一块儿,基本就能把网页上的数据扒下来了。
扒数据是第一步,关键是找到数据源。我找了好几个体育网站,发现有的网站反爬虫做得比较搞不定。找到一个,数据还算规整,就它了!
接下来就是写代码了。先用requests把网页内容抓下来,然后用BeautifulSoup解析HTML,找到包含积分排名的那个表格。这部分是最麻烦的,因为网页的HTML结构经常变,稍微改一点,我的代码就得跟着改。我得经常盯着,一旦发现网页结构变了,就赶紧改代码,简直就是个体力活。
数据抓下来之后,还得处理。把队伍的名字、比赛场次、胜负平、进球数、失球数、积分等等,都提取出来,放到一个列表里。然后把这个列表转换成一个DataFrame,这是pandas库里的一个数据结构,方便我进行排序和分析。
有了DataFrame,排序就简单了,直接调用sort_values方法,按照积分排序,齐活!把排序好的结果输出到一个CSV文件里,或者直接打印到控制台上。
为了方便自己看,我还加了个小功能,可以根据队伍的名字搜索,直接显示这支队伍的排名和积分情况。这样就不用每次都从头看到尾了。
整个过程下来,学到了不少东西。Python的语法、爬虫的原理、数据处理的方法,还有就是,要学会适应变化,因为网页结构随时都可能变。折腾了这么久,终于能每天自动更新英超积分排名了,感觉真不错!
这只是个小玩具,还有很多可以改进的地方。比如,可以把数据存到数据库里,方便长期保存和分析;可以做一个简单的Web界面,让更多人可以访问;还可以加入更多的统计信息,比如主场胜率、客场胜率等等。以后有时间再慢慢折腾。
- 先用requests抓取网页
- 然后BeautifulSoup解析HTML
- 接着提取数据,放到DataFrame
- 排序输出,完成!
就这样,这回的分享就到这里,下次再跟大家聊聊我搞的其他小玩意儿!
还没有评论,来说两句吧...