本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個(gè)人專欄
本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個(gè)人專欄
下載W3Cschool手機(jī)App,0基礎(chǔ)隨時(shí)隨地學(xué)編程>>戳此了解
導(dǎo)語(yǔ)
利用Python爬取并簡(jiǎn)單分析魚C論壇的魚油數(shù)據(jù)。因?yàn)椴幌胗绊懻搲恼_\(yùn)作,給論壇服務(wù)器帶來不必要的壓力,所以爬蟲代碼里寫了很多sleep語(yǔ)句,花了大概一個(gè)星期的時(shí)間湊了40萬條數(shù)據(jù)(然后數(shù)據(jù)清洗的時(shí)候發(fā)現(xiàn)大部分?jǐn)?shù)據(jù)是無效的T_T)。因?yàn)閿?shù)據(jù)都在相關(guān)文件里提供了,所以就不要自己重新爬了,因?yàn)檎搲路饹]有什么反爬措施,所以爬蟲代碼并沒有什么學(xué)習(xí)價(jià)值,隨便瞟一眼就行了。
OK,讓我們愉快地開始吧~
相關(guān)文件
開發(fā)工具
Python版本:3.6.4
相關(guān)模塊:
requests模塊;
fake_useragent模塊;
pyechart模塊;
以及一些python自帶的模塊。
環(huán)境搭建
安裝Python并添加到環(huán)境變量,pip安裝需要的相關(guān)模塊即可。
原理簡(jiǎn)介
其實(shí)爬蟲的文章我一般寫的比較水,然后偶爾瞅了瞅別人的文章,發(fā)現(xiàn)基本是數(shù)據(jù)獲取,清洗,最后可視化分析這個(gè)流程,于是打算稍微模仿一下,雖然我可能還是會(huì)寫的比較隨意and極其不專業(yè)。
數(shù)據(jù)獲取:
這部分很簡(jiǎn)單,魚C論壇每個(gè)魚油的個(gè)人主頁(yè)除了uid不同,其他都是一樣的:
挨個(gè)請(qǐng)求每個(gè)魚油個(gè)人主頁(yè)的url,然后把返回的內(nèi)容保存起來就可以了:
最后獲得的數(shù)據(jù)大概這么多,一共40萬條左右吧,雖然大部分是無效的。
數(shù)據(jù)清洗:
接下來我們從每個(gè)魚油的個(gè)人主頁(yè)中提取一些有用的數(shù)據(jù),例如性別、生日、出生地、學(xué)歷等內(nèi)容,具體代碼實(shí)現(xiàn)如下:
最后剩下的數(shù)據(jù)大概這么多:
他喵的這也太真實(shí)了吧,最后大概只剩下了1萬多條數(shù)據(jù),簡(jiǎn)直了。然后我去看了下,發(fā)現(xiàn)很多魚油的主頁(yè)是這樣的:
還有很多uid是無效用戶:
本來想重新爬的,后來感覺還得拖幾天太麻煩了,算了,就這樣吧,1萬條數(shù)據(jù)也是數(shù)據(jù)啊,反正估計(jì)全爬完也沒多少數(shù)據(jù)。
數(shù)據(jù)可視化分析:
首先,讓我們來看看魚C論壇魚油們的男女比例吧:
Emmmm,原來論壇里還是有女生的,我一直以為是沒有女生的。
OK,接下來我們來看看論壇里的魚油學(xué)歷分布情況吧:
竟然有將近200個(gè)博士,驚訝ing。
OK,接下來我們來看看論壇魚油們的省份分布吧,這里只統(tǒng)計(jì)了國(guó)內(nèi)的魚油:
看了魚C論壇的魚油們來自五湖四海,當(dāng)然在廣東省的魚油是最多的,目測(cè)論壇的壇主小甲魚應(yīng)該是廣東人吧。
再接下來,我們來看看魚C論壇魚油的年齡分布吧:
估計(jì)論壇里的魚油大部分還是90后的學(xué)生黨吧,雖然90后大多應(yīng)該已經(jīng)畢業(yè)了。
最后,我們?cè)賮砜纯凑搲锬膫€(gè)魚油比較土豪吧,也就是魚幣和C幣最多的魚油,統(tǒng)計(jì)結(jié)果如下圖所示:
本來想再分析分析技術(shù)值最高的魚油之類的,不過飯點(diǎn)到了,那就算了吧T_T。感興趣的同學(xué)可以自己下載數(shù)據(jù)繼續(xù)分析分析。
嗯,就這樣吧,至少這類文章的寫作步驟應(yīng)該模仿對(duì)了,完整源代碼和數(shù)據(jù)詳見相關(guān)文件。
更多
代碼在2018年9月14日前測(cè)試無誤