十分钟,Python 带你看遍世界足球俱乐部沉浮

简介: 十分钟,Python 带你看遍世界足球俱乐部沉浮

作为一名足球迷,在年终盘点中,怎么能少了足球呢。如果你是关注欧洲足球的球迷(没办法,人家欧洲是足球的世界的中心),那么你一定知道,2019年是属于利物浦的一年,不多说,红军的首个英超冠军已经遥遥在望了,fighting!

数据获取

我们还是先来看看如何拿到我们需要的数据呢,我们这里选择的是一个国外的统计网站,可以查看历年的足球俱乐部得分和排名

https://footballdatabase.com/ranking/world/1

获取俱乐部信息

首先我们需要拿到俱乐部相关的信息,这里选取前200名俱乐部,使用 BeautifulSoup 解析网页即可

for name in name_list:
        rank_list = []
        try:
            rank_point = name.find_all('td', attrs={'class': 'rank'})
            rank = rank_point[0].text
            point = rank_point[1].text
            club_info = name.find('td', attrs={'class': 'club text-left'}).find_all('a')
            club_url = club_info[0]['href']
            club_name = club_info[0].find('div', attrs={'class': 'limittext'}).text
            club_country_url = club_info[1]['href']
            club_country_name = club_info[1].text
            rank_list.append([rank, club_name, club_country_name, club_url, club_country_url, point])
            list_rank.append(rank_list)
            save_club_name(rank_list)
        except:
            pass

拿到各个俱乐部的信息后,就可以遍历该列表,获取俱乐部历年的得分和排名数据

获取俱乐部历史数据

俱乐部的历史数据也是保存在网页的 Javascript 变量中的,对于如何获取这种数据,我们在前面的文章中也都有介绍,这里就不过多赘述了

his_rank_list = []
    for data in data_list:
        print(data)
        url = data[0][3]
        his_res = requests.get(base_url + url)
        his_content = BeautifulSoup(his_res.text, "html.parser")
        js = his_content.find_all('script')[1].string
        src_text = js2xml.parse(js)
        src_tree = js2xml.pretty_print(src_text)
        data_tree = BeautifulSoup(src_tree, 'html.parser')
        array_list = data_tree.find_all('array')
        club_name = data[0][1]
        for array in array_list[2:-2]:
            his_rank_list = []
            array_date = array.find('string').text
            date = array_date
            try:
                month = month_map[array_date.split(' ')[0]]
                year = array_date.split(' ')[1]
                date = str(year) + '-' + str(month)
            except:
                pass
            array_data = array.find_all('number')
            try:
                point = array_data[0]['value']
                rank = array_data[1]['value']
                his_rank_list.append([rank, point, date])
                save_his_data(club_name, his_rank_list)
            except:
                raise

这样我们就可以得到两个文件,分别是 club_data.csv 和 rank_his_data.csv

俱乐部排行

我们这里整理的当前世界俱乐部前20的排名,可以看到利物浦以2120分高居榜首,曼城则紧随其后,看来世界第一联赛还是很给力的!

接下来就是西超的巴塞和德甲霸主拜仁,在意甲实现了八连冠的老夫人以及无敌于法甲的大巴黎。

欧洲五大联赛,名不虚传

怎么样,快来看看有没有你熟悉的队徽上榜呢!

国家分布

下面我们再来看看哪些国家的俱乐部最多呢,首先是前20名的国家分布

可以看到,英格兰和西班牙的俱乐部最多,都有4家上榜,而次之的是意大利以及德国,都是3家,这四个国家就占去了大半。而唯一一家非欧洲的俱乐部则位于巴西,足球王国也是要面子的哇!

我们再把榜单扩大到所有的抓取数据,即前200名的俱乐部数据

西班牙的俱乐部最多,达到了20家,其次是英格兰也有17家之多。这些年西甲英超的球队垄断欧冠冠军,还是有其深厚的足球底蕴作为依托的!

而欧洲传统足球强国西班牙、英格兰、德国、法国以及意大利再加上南美双珠阿根廷和巴西,这七大豪强的俱乐部基本占据了榜单的半壁江山,足球的格局,从来如此!

当然中超也有两家上榜俱乐部,分别是133名的上海上港和166名的广州恒大,任重而道远呐!

top7 排名走势

这七家俱乐部既有欧陆的传统豪门,也有金元新秀,都是当今俱乐部中的顶级强队。

我们可以看出,对于“皇萨仁”来说,它们的成绩都是极其稳定的,常年处于极高的竞技水平上。而当红的利物浦则在本世纪初的前十年遭遇到了低谷,一路前行,着实不易。

再有就是金元足球的代表大巴黎和蓝月亮,其中大巴黎尤为明显,从2011年开始,得益于卡塔尔财团的进入,其排名开始急速攀升,在世界范围内的影响力也大幅提高,战绩更是不断突破,常年垄断法甲冠军,不过对于欧冠赛场,巴黎还有很长的路要走。

而对于老牌劲旅尤文图斯,相信大家都会想起著名的“电话门”事件,此事件之后,不仅尤文图斯跌落低谷,就连意大利足球,曾经的亚平宁联赛的风采,都一去不复返了。不过从2011年开始,尤文走在了复兴的路上,也扛起了意大利足球的大旗!

各大洲排名

我们从上面的排名不难看出,所谓的世界排名,其实大多是欧洲俱乐部,那么其他大洲的俱乐部呢,我们一起来看下。

亚洲

非洲

南美洲

最后还是来看看近十年世界足球俱乐部排行的变化情况

转眼间快到春节了,在这里预祝各位小伙伴儿们春节快乐!

这篇文章可能是春节前的最后一篇原了,由于本人水平一般,能力有限,写原创真是不易,大家且看且珍惜吧。如果觉得还可以,就点点“在看”,以资鼓励,谢谢!

相关文章
|
4月前
|
索引 Python
十分钟学习Python异常处理
在编程过程中,错误和异常是不可避免的。Python提供了强大的异常处理机制,帮助我们捕获和处理运行时错误,使程序更加健壮和可靠。本文将带你在十分钟内快速掌握Python的异常处理基础知识。
|
4月前
|
存储 人工智能 数据挖掘
十分钟学习Python基础知识
Python是一种高效、易学且功能强大的编程语言,广泛应用于数据分析、人工智能、Web开发等领域。如果你是编程新手,想要快速入门Python,那么这篇文章将是你的最佳选择。我将在十分钟内带你了解Python的基础知识。
|
6月前
|
数据采集 Web App开发 搜索推荐
十分钟带你搞懂Python那啥
十分钟带你搞懂Python那啥
42 0
|
Python
基于python快速开发足球游戏代码记录
基于python快速开发足球游戏代码记录
115 0
基于python快速开发足球游戏代码记录
|
监控 Shell 持续交付
强大的 Python 任务自动化工具!invoke 十分钟入门指南
invoke 是从著名的远程部署工具 Fabric 中分离出来的,它与 paramiko 一起是 Fabric 的两大最核心的基础组件。
512 0
|
数据采集 C++ Python
Python十分钟制作属于你自己的个性logo
词云的使用相信大家已经不陌生了,使用很简单,直接调用wordcloud包就可以了。它的主要功能是根据文本词汇和词汇频率生成图片,从中可以直观的看出各个词汇所占比重。最近正好想做一个人的logo,于是乎决定使用词云来制作完成。
Python十分钟制作属于你自己的个性logo
|
Python
转载:Python十分钟入门
    Python十分钟入门:http://python.jobbole.com/23425/
896 0
|
9天前
|
设计模式 开发者 Python
Python编程中的设计模式:工厂方法模式###
本文深入浅出地探讨了Python编程中的一种重要设计模式——工厂方法模式。通过具体案例和代码示例,我们将了解工厂方法模式的定义、应用场景、实现步骤以及其优势与潜在缺点。无论你是Python新手还是有经验的开发者,都能从本文中获得关于如何在实际项目中有效应用工厂方法模式的启发。 ###
|
2天前
|
存储 人工智能 数据挖掘
从零起步,揭秘Python编程如何带你从新手村迈向高手殿堂
【10月更文挑战第32天】Python,诞生于1991年的高级编程语言,以其简洁明了的语法成为众多程序员的入门首选。从基础的变量类型、控制流到列表、字典等数据结构,再到函数定义与调用及面向对象编程,Python提供了丰富的功能和强大的库支持,适用于Web开发、数据分析、人工智能等多个领域。学习Python不仅是掌握一门语言,更是加入一个充满活力的技术社区,开启探索未知世界的旅程。
12 5