1 項(xiàng)目描述##
以豆瓣電影上提供的電影數(shù)據(jù)為例,完整地展示網(wǎng)絡(luò)數(shù)據(jù)從獲取、處理到分析、可視化這一過程,純當(dāng)練手,也為感興趣的小伙伴提供相關(guān)的技術(shù)介紹。項(xiàng)目代碼托管在Github上,可視化網(wǎng)站請(qǐng)?jiān)L問這里。

2 數(shù)據(jù)獲取##
用python寫爬蟲,Scrapy和urllib2都是比較好的選擇,由于我對(duì)功能的要求比較簡(jiǎn)單,故選擇后者即可。
在豆瓣電影上通過Chrome開發(fā)工具找到數(shù)據(jù)請(qǐng)求API,接下來就可以寫代碼爬一些電影數(shù)據(jù)了,我使用的是這兩個(gè)API:
- http://movie.douban.com/j/search_tags?type=movie
- http://movie.douban.com/j/search_subjects?type=movie&tag=愛情&page_limit=20&page_start=0
第一個(gè)API是獲取所有電影的分類即tag,第二個(gè)是請(qǐng)求某個(gè)tag下偏移為page_start的page_limit條電影數(shù)據(jù),包括電影的標(biāo)題、url、評(píng)分等信息。
有了電影的url,再次爬取該頁面對(duì)應(yīng)的html內(nèi)容, 然后用Beautiful Soup解析出想要的字段就好了。最終一共獲取了4587條電影記錄,每條記錄包含以下15個(gè)字段:電影ID、標(biāo)題、鏈接、縮略圖、評(píng)分、導(dǎo)演、編劇、演員、分類、上映國家、語言、上映時(shí)間、時(shí)長(zhǎng)、別名和簡(jiǎn)介。
3 數(shù)據(jù)清洗##
這一步主要是為了提高數(shù)據(jù)質(zhì)量和配合后續(xù)的工作,對(duì)獲取的數(shù)據(jù)進(jìn)行一些清洗和預(yù)處理工作。比如將字段里多余的空白去掉、將上映時(shí)間僅保留年份、將時(shí)長(zhǎng)處理為以分鐘為單位的整數(shù)等,下圖是同一條電影數(shù)據(jù)在清洗前后的對(duì)比。

4 數(shù)據(jù)分析##
最基本的分析包括一些統(tǒng)計(jì)量的計(jì)算,說白了就是固定或以某一個(gè)字段分類,對(duì)另一個(gè)字段進(jìn)行求和或求平均。我的主要分析字段是電影數(shù)量和平均評(píng)分,看它們和電影分類、語言、上映國家、上映時(shí)間、時(shí)長(zhǎng)等其他字段之間有何關(guān)聯(lián)。
5 數(shù)據(jù)可視化##
俗話說,“一圖勝千言”,所以數(shù)據(jù)分析的結(jié)果以可視化網(wǎng)站的形式給出。我用Flask搭建了一個(gè)簡(jiǎn)單的網(wǎng)站,用Echarts繪制了一些簡(jiǎn)單的圖標(biāo)來展示分析的結(jié)果,可視化網(wǎng)站請(qǐng)?jiān)L問這里。
網(wǎng)站包含三個(gè)子菜單:統(tǒng)計(jì)、評(píng)分、搜索?!敖y(tǒng)計(jì)”展示了和電影數(shù)量相關(guān)的分析結(jié)果,“評(píng)分”展示了和電影評(píng)分相關(guān)的分析結(jié)果,“搜索”則提供了一個(gè)簡(jiǎn)單的基于關(guān)鍵詞匹配的搜索功能。它們看起來大概是這個(gè)樣子:



6 總結(jié)##
這次開發(fā)任務(wù)主要出于個(gè)人興趣,順便拋磚引玉地和大家介紹一些基本的方法和技術(shù)。網(wǎng)絡(luò)上可以獲取的數(shù)據(jù)不計(jì)其數(shù),只要腦洞開得夠大,在數(shù)據(jù)源、分析技術(shù)、可視化方法上進(jìn)一步提升,就一定可以創(chuàng)造出更有意義和價(jià)值的成果。