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)演、編劇戳葵、演員就乓、分類、上映國(guó)家拱烁、語言生蚁、上映時(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)分,看它們和電影分類庐橙、語言假勿、上映國(guó)家、上映時(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)分、搜索易稠「追希“統(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à)值的成果或辖。