懂球帝App是什麼?

懂球帝是一款提供全球體育足球新聞、深度報道、足球社區的手機App,基本上可以滿足球迷在手機上關於足球的一切需求。

懂球帝App之於足球大概就像虎撲之於籃球吧。

我爬取了懂球帝App上最近的 99,889 篇post,共有 5,891,037 條評論,而這些評論是來自於 610,803 個用戶。

(本來想著多拿一點用戶數據的...結果只有十分之一...)

這個項目所有的代碼都是用 Python 實現。

代碼地址:

pengshiqi/Dongqiudi?

github.com
圖標

為了獲取用戶ID,我的思路是:先獲取近期的文章,然後從文章的評論區中獲取評論用戶的ID。

首先,我使用抓包工具 Charles 抓包所需要的各個API:

  1. 獲取 article ID 的 API:api.dongqiudi.com/app/t,這是一頁(共20篇)的數據,下一頁的API在next欄位中。
  2. 獲取評論用戶的 API:http://api.dongqiudi.com/v2/article/{article_id}/comment?sort=down&version=600,同樣地,下一頁的API在next欄位中。
  3. 獲取用戶信息的 API:https://api.dongqiudi.com/users/profile/{user_id}。
  4. 獲取球隊信息的 API:api.dongqiudi.com/catalhttp://api.dongqiudi.com/catalog/channels/{league_id}

其中,獲取球隊信息的API需要登錄,具體請求方法為:在網頁版懂球帝上登錄自己的賬號後,獲取Cookie,並將這個Cookie放入headers中再請求這兩個API。

爬取數據我使用的是 requests/requests,其中爬取評論區用戶ID的時間比較長,而且由於下一頁的API是由上一頁API返回的,所以只能串列而不能並行。為了穩定性和魯棒性考慮,還需要有斷點繼續機制。

在爬取到60萬個用戶ID後,使用這些ID來獲取各個用戶的信息,這個階段是可以並行的。我有考慮過使用非同步爬蟲(asyncio 和 aiohttp)來加速,主要參考的是 加速爬蟲: 非同步載入 Asyncio - 網頁爬蟲 | 莫煩Python,但後來發現只有60w用戶,數據量並不是特別大,就沒有這麼做。僅僅是將爬蟲任務分配到了3台伺服器,爬了10個小時就得到了。

爬取到的所有數據我都存儲在本地的 sqlite3 資料庫中。

數據分析階段,使用 pyecharts/pyecharts 來進行數據可視化,其中的分詞部分使用 fxsjy/jieba 來完成。


下面是數據分析的結果:

01

這些用戶中,有 263,960 人為男性♂用戶,有 18,227 人為女性♀用戶,其餘 328,609 人沒有填寫性別信息。

emmmm,上網搜了下, Bilibili的男女比大概是 5 : 4, 知乎的男女比大概是 2 : 1, 懂球帝這 14.5 : 1 的比例,大概就是繼GitHub之後又一個同性交友社區了吧...

02

再看看懂球帝們所在的地區,首先是國內的分布情況。

廣東的懂球帝數量最多,其次是北京,再次是山東和江蘇。

然後是海外懂球帝們的分布。

由於懂球帝App上選擇地區時,只能選擇圖中高亮的地區,所以只比較這些地區的情況。

這些地區中懂球帝數量最多的是西班牙????,其次是英國????和美國????。

03

懂球帝App中,每個用戶可以設置自己最喜愛的球隊,然後球隊隊標會出現在名字旁邊,比如這樣

以此為依據,我們來看看哪支球隊的球迷數量最多。

先看看國家隊,同樣地,這裡可以選擇的國家隊數量也是有限的。

顯然支持國足的朋友還是居多的,其次就是德國????和阿根廷????了,三喵軍團????這一屆的粉絲不行啊。

再看看歐洲五大聯賽

英超:

曼聯球迷最多,阿森納、利物浦、切爾西其次。

西甲:

西甲還用看???巴薩皇馬佔掉了97%...

德甲:

德甲也別看了吧...拜仁球迷佔了78%,多特佔了18%...其餘球隊xxx...

意甲:

儘管尤文圖斯剛實現了意甲七連冠,但粉絲最多的依然是AC米蘭。

法甲:

巴黎聖日耳曼沒有什麼話要說...

看了這些,就大概明白了,為什麼英超的比賽好看,倒不是說英超球隊多麼厲害,而是競爭力太大,前四甚至前六的球隊的實力都在伯仲之間,亂世英超實至名歸。

看完歐洲五大聯賽,那必須得關注一波中國足球超級聯賽。??

中超:

大連的球迷比上港多...上港的球迷比申花多...??

最後,將所有俱樂部的粉絲數量來比較一下。

下圖展示了Top 20的俱樂部,巴薩皇馬遙遙領先...

04

然後是對用戶名字的分析。

使用jieba分詞並去除一些無意義的結果後,得到了下面這個詞雲。

大家在起名字的時候還是以足球、梅西、巴薩居多啊。

梅西出現的頻率比C羅大不少,我覺得這是因為,梅西的粉絲一般就起名梅西或者Messi了,而C羅的粉絲可能會起名 C羅、克斯斯蒂亞諾 羅納爾多、CR7...稀釋掉了不少。

我問一個朋友為啥會有透露這個詞,原來是,一位不願透露姓名的xxx ......

05

最後,將各位懂球帝加入App的時間,畫成了如下直方圖

可以發現,以2015年中-2017年中加入的懂球帝居多,近一年加入的反而較少,我想大概是新加入的用戶們很少評論的緣故吧。


總結一下,這是我第一次大規模地爬取百萬級的數據,懂球帝App沒有反爬策略,還是挺輕鬆的。在這個過程中,抓包手機App的API 和 作圖分析數據 挺有意思的,相對比較無聊的是數據的爬取階段,等待時間比較長,而且可能會出現各種意想不到的情況。??

推薦閱讀:

查看原文 >>
相关文章