嘿嘿,今天用Python分析各國足球俱樂部排名~猜到第一是誰了嗎?


作為一名足球迷,在年終盤點中,怎麼能少了足球呢。如果你是關注歐洲足球的球迷(沒辦法,人家歐洲是足球的世界的中心),那麼你一定知道,2019年是屬於利物浦的一年,不多說,紅軍的首個英超冠軍已經遙遙在望了,fighting!

數據獲取

我們還是先來看看如何拿到我們需要的數據呢,我們這裡選擇的是一個國外的統計網站,可以查看歷年的足球俱樂部得分和排名

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

獲取俱樂部信息

首先我們需要拿到俱樂部相關的信息,這裡選取前200名俱樂部,使用 BeautifulSoup 解析網頁即可

<code>    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/<code>

拿到各個俱樂部的信息後,就可以遍歷該列表,獲取俱樂部歷年的得分和排名數據

獲取俱樂部歷史數據

俱樂部的歷史數據也是保存在網頁的 Javascript 變量中的,對於如何獲取這種數據,我們在前面的文章中也都有介紹,這裡就不過多贅述了

<code>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/<code>

這樣我們就可以得到兩個文件,分別是 club_data.csv 和 rank_his_data.csv

嘿嘿,今天用Python分析各國足球俱樂部排名~猜到第一是誰了嗎?


俱樂部排行

我們這裡整理的當前世界俱樂部前20的排名,可以看到利物浦以2120分高居榜首,曼城則緊隨其後,看來世界第一聯賽還是很給力的!

接下來就是西超的巴塞和德甲霸主拜仁,在意甲實現了八連冠的老夫人以及無敵於法甲的大巴黎。

歐洲五大聯賽,名不虛傳

嘿嘿,今天用Python分析各國足球俱樂部排名~猜到第一是誰了嗎?

怎麼樣,快來看看有沒有你熟悉的隊徽上榜呢!

國家分佈

下面我們再來看看哪些國家的俱樂部最多呢,首先是前20名的國家分佈

嘿嘿,今天用Python分析各國足球俱樂部排名~猜到第一是誰了嗎?

可以看到,英格蘭和西班牙的俱樂部最多,都有4家上榜,而次之的是意大利以及德國,都是3家,這四個國家就佔去了大半。而唯一一家非歐洲的俱樂部則位於巴西,足球王國也是要面子的哇!

我們再把榜單擴大到所有的抓取數據,即前200名的俱樂部數據

嘿嘿,今天用Python分析各國足球俱樂部排名~猜到第一是誰了嗎?

西班牙的俱樂部最多,達到了20家,其次是英格蘭也有17家之多。這些年西甲英超的球隊壟斷歐冠冠軍,還是有其深厚的足球底蘊作為依託的!

而歐洲傳統足球強國西班牙、英格蘭、德國、法國以及意大利再加上南美雙珠阿根廷和巴西,這七大豪強的俱樂部基本佔據了榜單的半壁江山,足球的格局,從來如此!

當然中超也有兩家上榜俱樂部,分別是133名的上海上港和166名的廣州恆大,任重而道遠吶!

top7 排名走勢

這七傢俱樂部既有歐陸的傳統豪門,也有金元新秀,都是當今俱樂部中的頂級強隊。

嘿嘿,今天用Python分析各國足球俱樂部排名~猜到第一是誰了嗎?

我們可以看出,對於“皇薩仁”來說,它們的成績都是極其穩定的,常年處於極高的競技水平上。而當紅的利物浦則在本世紀初的前十年遭遇到了低谷,一路前行,著實不易。

再有就是金元足球的代表大巴黎和藍月亮,其中大巴黎尤為明顯,從2011年開始,得益於卡塔爾財團的進入,其排名開始急速攀升,在世界範圍內的影響力也大幅提高,戰績更是不斷突破,常年壟斷法甲冠軍,不過對於歐冠賽場,巴黎還有很長的路要走。

而對於老牌勁旅尤文圖斯,相信大家都會想起著名的“電話門”事件,此事件之後,不僅尤文圖斯跌落低谷,就連意大利足球,曾經的亞平寧聯賽的風采,都一去不復返了。不過從2011年開始,尤文走在了復興的路上,也扛起了意大利足球的大旗!

各大洲排名

我們從上面的排名不難看出,所謂的世界排名,其實大多是歐洲俱樂部,那麼其他大洲的俱樂部呢,我們一起來看下。

亞洲

嘿嘿,今天用Python分析各國足球俱樂部排名~猜到第一是誰了嗎?

非洲

嘿嘿,今天用Python分析各國足球俱樂部排名~猜到第一是誰了嗎?

南美洲

嘿嘿,今天用Python分析各國足球俱樂部排名~猜到第一是誰了嗎?

最後還是來看看近十年世界足球俱樂部排行的變化情況


分享到:


相關文章: