python 豆瓣评论数据分析_Python爬虫实战案例:豆瓣影评大数据分析报告之网页分析...
個(gè)人希望,通過(guò)這個(gè)完整的爬蟲(chóng)案例(預(yù)計(jì)總共4篇短文),能夠讓爬蟲(chóng)小白學(xué)會(huì)怎么做爬蟲(chóng)的開(kāi)發(fā),所以在高手們看來(lái),會(huì)有很多淺顯的廢話(huà),如果覺(jué)得啰嗦,可以跳過(guò)一些內(nèi)容~
上一篇文章給大家簡(jiǎn)單介紹了Python做爬蟲(chóng)所需要的環(huán)境、豆瓣影評(píng)分析的步驟以及豆瓣影評(píng)分析報(bào)告。本文將介紹制作影評(píng)分析的第一步:網(wǎng)頁(yè)分析。以往的教程通常會(huì)忽略這一步,直接告訴怎么做,我希望多分享一些,便于大家盡快熟悉怎么從網(wǎng)頁(yè)上爬數(shù)據(jù)。
以往我們做得比較多的分析,基礎(chǔ)數(shù)據(jù)一般來(lái)自于企業(yè)內(nèi)部的數(shù)據(jù)庫(kù)所存儲(chǔ)數(shù)據(jù)(通常我們稱(chēng)之為結(jié)構(gòu)化數(shù)據(jù)),或者是來(lái)自于手工文檔存儲(chǔ)的有一定格式的數(shù)據(jù)文件(通常稱(chēng)之為半結(jié)構(gòu)化數(shù)據(jù))。而今天我們要做的數(shù)據(jù)分析,數(shù)據(jù)基礎(chǔ)來(lái)自于網(wǎng)頁(yè)數(shù)據(jù),可以認(rèn)為其是非結(jié)構(gòu)化數(shù)據(jù)。非結(jié)構(gòu)化數(shù)據(jù)的采集,和前兩者的區(qū)別在于,你需要從一堆看似無(wú)規(guī)律的數(shù)據(jù)中找出有規(guī)律的數(shù)據(jù),然后再按照需求來(lái)處理。
回到起點(diǎn),我們要對(duì)豆瓣影評(píng)進(jìn)行分析,豆瓣影評(píng)所涉及的網(wǎng)頁(yè)有許多,每頁(yè)上的文字及圖片更是數(shù)不勝數(shù)。怎么才能讓大數(shù)據(jù)分析報(bào)告更有針對(duì)性、更準(zhǔn)確呢?難道真要從大海里撈一堆垃圾,然后再?gòu)睦袑ふ页鲆?guī)律么?
過(guò)往的工作經(jīng)歷,告訴我,這么瞎干的話(huà),是要累死人不賠命的。靜下心來(lái)理一理工作思路。還是和以前一樣,先理個(gè)大的步驟出來(lái):
報(bào)表需求數(shù)據(jù)統(tǒng)計(jì)數(shù)據(jù)需求豆瓣模塊網(wǎng)頁(yè)分析
按順序走就好了,和以前做項(xiàng)目區(qū)別不大嘛~
報(bào)表需求:如前文所述,我們需要展現(xiàn)的報(bào)表包括電影評(píng)分排名表、分區(qū)域電影熱度表、電影熱度(評(píng)論數(shù)量)排名表、電影詞頻分析表;
數(shù)據(jù)統(tǒng)計(jì):電影評(píng)分、電影熱度、分區(qū)域電影熱度、電影評(píng)論
數(shù)據(jù)需求:電影名稱(chēng)、電影ID、電影評(píng)分、電影評(píng)論數(shù)、電影評(píng)論文字、電影區(qū)域。當(dāng)然你還可以拿其他的一些數(shù)據(jù)備用,比如導(dǎo)演、演員、上映時(shí)間、片長(zhǎng)等等。
OK,搞清楚數(shù)據(jù)需求,下一步要做的就是對(duì)豆瓣網(wǎng)電影模塊進(jìn)行分析,在哪里可以拿到我們所需要的數(shù)據(jù)。
限于數(shù)據(jù)要求,我們本次就只對(duì)正在熱映的電影數(shù)據(jù)進(jìn)行抓取和分析。網(wǎng)頁(yè)路徑為:豆瓣電影首頁(yè)——>全部正在熱映(https://movie.douban.com/cinema/nowplaying/chengdu/,我在成都,所以系統(tǒng)默認(rèn)是成都目前熱映的電影頁(yè)面,就是它了)。就下面這個(gè)頁(yè)面。
接下來(lái),是到了分析網(wǎng)頁(yè)數(shù)據(jù)的時(shí)候了。在剛才的網(wǎng)頁(yè)頁(yè)面上,按下“F12”鍵,進(jìn)入該網(wǎng)頁(yè)的開(kāi)發(fā)者工具部分,其實(shí)就是形成網(wǎng)頁(yè)的元素及代碼。相信做過(guò)網(wǎng)頁(yè)前端的朋友都清楚,沒(méi)做過(guò)的也沒(méi)關(guān)系,在網(wǎng)上找找資料看一看就明白,這兒就不展開(kāi)來(lái)說(shuō)了。
開(kāi)發(fā)者工具——>調(diào)試程序,你看到的就是網(wǎng)頁(yè)源碼,如下圖:
現(xiàn)在我們開(kāi)始查找我們要的數(shù)據(jù)。舉個(gè)例子更容易懂些,比如網(wǎng)頁(yè)上的電影名稱(chēng)“狂暴巨獸”,我們需要看看如何在網(wǎng)頁(yè)中找到。在開(kāi)發(fā)者工具的右上角輸入“
狂暴巨獸
”,然后回車(chē)查找,看到如下信息:
大家有點(diǎn)明白沒(méi)?正在熱映的電影《狂暴巨獸》,在網(wǎng)頁(yè)背后的信息(姑且這么理解哈)就是這樣存起來(lái)的。關(guān)于HTML頁(yè)面的結(jié)構(gòu)和語(yǔ)言,本文就不詳細(xì)闡述了,有興趣的朋友可以自行研究哈。下面將盡可能的用小白文而不是IT語(yǔ)言,把我們要抓取的內(nèi)容所涉及的內(nèi)容給闡述清除,做過(guò)Web前端的朋友應(yīng)該可以直接忽略這一段了。
我們所看到的Web頁(yè)面,其背后是由多層容器嵌套而成,你可以想象成超市里買(mǎi)的組合裝保鮮盒,大的套小的,小的再套小的,每個(gè)容器里裝的就是我們?cè)诰W(wǎng)頁(yè)上看到的內(nèi)容。容器有個(gè)官方名稱(chēng)叫“標(biāo)簽”(英文tag)。上圖看到的《頭號(hào)玩家》的信息,包括演員啦、導(dǎo)演啦、地區(qū)啦等等,都是被裝在
...
這個(gè)標(biāo)簽中的。對(duì)了,通常標(biāo)簽會(huì)是成雙成對(duì)出現(xiàn),有開(kāi)始有結(jié)束,比如也可以寫(xiě)成簡(jiǎn)化版的
。只要通過(guò)開(kāi)始結(jié)束標(biāo)簽,你就能很容易分清楚容器包含的內(nèi)容。記住咯,容器是可以嵌套的,里三層外三層,我們要做的就是通過(guò)抽絲剝繭,將需要的數(shù)據(jù)給扒拉出來(lái)。
OK,找到最底層數(shù)據(jù)了,開(kāi)始向外扒拉:
1、在
標(biāo)簽外面,是
標(biāo)簽,該標(biāo)簽有一個(gè)屬性“class='lists'”,記住了,后續(xù)我們的程序會(huì)用到的哈~
2、繼續(xù)往外扒拉,是屬性為“class='mod-bd'”的div標(biāo)簽
3、繼續(xù)往外扒拉,依然是div標(biāo)簽,只是屬性變成了“id='nowplaying'”,這個(gè)單詞熟悉不?好像是“正在上映”哦,哈哈,得來(lái)完全不費(fèi)工夫啊
4、額外還得提一個(gè),就是圖下方的href='...',那就是每部電影詳細(xì)信息的鏈接地址,這個(gè)也要扒拉下來(lái),就靠它在程序里進(jìn)到下一步處理咯
在開(kāi)發(fā)者工具,滾動(dòng)條往下拉一拉,另一部電影《頭號(hào)玩家》的信息也出來(lái)了。
繼續(xù)往下拉,一部一部電影都出來(lái)了,是不是看起來(lái)特別像我們熟悉的結(jié)構(gòu)化數(shù)據(jù)了啊,電影ID、電影名、評(píng)分、上映時(shí)間、片長(zhǎng)、地區(qū)、導(dǎo)演、演員、點(diǎn)評(píng)數(shù)、地址等等。我們把一部部電影的數(shù)據(jù)存起來(lái),是不是就是我們熟悉的關(guān)系型數(shù)據(jù)模型了呢。終于回到我們熟悉的情景了。
看明白沒(méi)?沒(méi)明白倒回去再瞅瞅,看明白了我們往下吧。。。剛才只是看到了電影的基礎(chǔ)信息,我們最想要的評(píng)論還沒(méi)看到呢,評(píng)論在哪里呢?在網(wǎng)頁(yè)上點(diǎn)擊電影縮略圖,會(huì)跳轉(zhuǎn)到電影詳細(xì)頁(yè)面,其實(shí)呢,網(wǎng)址就是上面扒拉下來(lái)的href啦。往下啦,看到我們需要的評(píng)論了。。。
繼續(xù)上一個(gè)頁(yè)面的動(dòng)作,一言不合就按F12鍵。。。以后你們會(huì)上癮的,打開(kāi)網(wǎng)頁(yè)就想按F12鍵。。。一樣的,在查詢(xún)欄輸入“全部 5884 條”,記得數(shù)字前后有空格,不然查不到的。
找到了吧,記住其前后的標(biāo)簽哈。大家多嘗試,我就不一個(gè)一個(gè)列了。下一步是找到影迷對(duì)電影的評(píng)論了。點(diǎn)擊“更多短評(píng)”,跳到詳細(xì)評(píng)論頁(yè)面:
詳細(xì)評(píng)論每頁(yè)只有20條,所以要獲得更多的評(píng)論,需要翻頁(yè)啦。怎么在程序里實(shí)現(xiàn)翻頁(yè)?請(qǐng)點(diǎn)擊“后一頁(yè)”,跳轉(zhuǎn)后仔細(xì)看IE地址欄中的地址:https://movie.douban.com/subject/26430636/comments?start=20&limit=20&sort=new_score&status=P&percent_type=,中間的start=20以及l(fā)imit=20,就是從第20條開(kāi)始,每頁(yè)顯示20條,明白了么?未來(lái)在程序中,你需要自動(dòng)改變start的數(shù)字來(lái)打開(kāi)詳細(xì)評(píng)論網(wǎng)頁(yè)。
下一步,繼續(xù)獲取評(píng)論數(shù)據(jù),依然是F12,沒(méi)創(chuàng)意。網(wǎng)頁(yè)上找個(gè)影迷的昵稱(chēng),輸入查找,看到了評(píng)論數(shù)據(jù)所在的位置和標(biāo)簽。
OK,我們已經(jīng)把我們想要的數(shù)據(jù)都找到了,大家學(xué)會(huì)了怎么在網(wǎng)頁(yè)上找自己想要的內(nèi)容了么?不光是豆瓣哦,其他網(wǎng)站也可以的,比如看小說(shuō)的網(wǎng)站,先把所有小說(shuō)扒拉下來(lái)再慢慢看,甚至于電影,你都可以的。當(dāng)然,涉及版權(quán)的問(wèn)題,大家要注意的哈;涉及腎的問(wèn)題,大家就自己保重了哈~
今天我們主要就講了怎么樣獲取數(shù)據(jù)需求,并手工去扒拉所需數(shù)據(jù)信息,流程像不像以前我們做企業(yè)管理報(bào)表的數(shù)據(jù)需求及滿(mǎn)足度分析啊?大家很多時(shí)候可以觸類(lèi)旁通的。下一篇,我給大家講解在Python中,怎么樣獲取、分析并讀取網(wǎng)頁(yè)上所需的數(shù)據(jù)。
總結(jié)
以上是生活随笔為你收集整理的python 豆瓣评论数据分析_Python爬虫实战案例:豆瓣影评大数据分析报告之网页分析...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python大一知识点串讲_python
- 下一篇: python深入与提高_关于提高Pyth