當前位置:
首頁 > 知識 > 戰狼2 影評爬取及分析

戰狼2 影評爬取及分析

作者:hang

原文:https://segmentfault.com/a/1190000010473819

剛接觸python不久,做一個小項目來練練手。前幾天看了《戰狼2》,發現它在最新上映的電影裡面是排行第一的,如下圖所示。準備把豆瓣上對它的影評做一個分析。


目標總覽

主要做了三件事:

抓取網頁數據

清理數據

用詞雲進行展示

使用的python版本是3.5.


一、抓取網頁數據

第一步要對網頁進行訪問,python中使用的是urllib庫。代碼如下:

其中https://movie.douban.com/nowp...是豆瓣最新上映的電影頁面,可以在瀏覽器中輸入該網址進行查看。 html_data是字元串類型的變數,裡面存放了網頁的html代碼。 輸入 可以查看,如下圖所示:

第二步,需要對得到的html代碼進行解析,得到裡面提取我們需要的數據。

在python中使用BeautifulSoup庫進行html代碼的解析。 (註:如果沒有安裝此庫,則使用 進行安裝即可!) BeautifulSoup使用的格式如下:

第一個參數為需要提取數據的html,第二個參數是指定解析器,然後使用 讀取html標籤中的內容。

但是html中有這麼多的標籤,該讀取哪些標籤呢?其實,最簡單的辦法是我們可以打開我們爬取網頁的html代碼,然後查看我們需要的數據在哪個html標籤裡面,再進行讀取就可以了。如下圖所示:

從上圖中可以看出在 標籤開始是我們想要的數據,裡面有電影的名稱、評分、主演等信息。所以相應的代碼編寫如下:

其中 是一個列表,可以用 查看裡面的內容,如下圖所示:

在上圖中可以看到data-subject屬性裡面放了電影的id號碼,而在img標籤的alt屬性裡面放了電影的名字,因此我們就通過這兩個屬性來得到電影的id和名稱。(註:打開電影短評的網頁時需要用到電影的id,所以需要對它進行解析),編寫代碼如下:

其中列表nowplaying_list中就存放了最新電影的id和名稱,可以使用 進行查看,如下圖所示:

可以看到和豆瓣網址上面是匹配的。這樣就得到了最新電影的信息了。接下來就要進行對最新電影短評進行分析了。例如《戰狼2》的短評網址為:

其中 就是電影的id, 表示評論的第0條評論。

接下來接對該網址進行解析了。打開上圖中的短評頁面的html代碼,我們發現關於評論的數據是在 標籤的 屬性下面,如下圖所示:

因此對此標籤進行解析,代碼如下:

此時在 列表中存放的就是div標籤和comment屬性下面的html代碼了。在上圖中還可以發現在p標籤下面存放了網友對電影的評論,如下圖所示:

因此對 代碼中的html代碼繼續進行解析,代碼如下:

使用 查看eachCommentList列表中的內容,可以看到裡面存里我們想要的影評。如下圖所示:

好的,至此我們已經爬取了豆瓣最近播放電影的評論數據,接下來就要對數據進行清洗和詞雲顯示了。


二、數據清洗

為了方便進行數據進行清洗,我們將列表中的數據放在一個字元串數組中,代碼如下:

使用 進行查看,如下圖所示:

可以看到所有的評論已經變成一個字元串了,但是我們發現評論中還有不少的標點符號等。這些符號對我們進行詞頻統計時根本沒有用,因此要將它們清除。所用的方法是正則表達式。python中正則表達式是通過re模塊來實現的。代碼如下:

繼續使用 語句進行查看,如下圖所示:

我們可以看到此時評論數據中已經沒有那些標點符號了,數據變得"乾淨"了很多。

因此要進行詞頻統計,所以先要進行中文分詞操作。在這裡我使用的是結巴分詞。如果沒有安裝結巴分詞,可以在控制台使用 進行安裝。(註:可以使用 查看是否安裝了這些庫)。代碼如下所示:

因為結巴分詞要用到pandas,所以我們這裡載入了pandas包。可以使用 查看分詞之後的結果,如下圖所示:

從上圖可以看到我們的數據中有"看"、"太"、"的"等虛詞(停用詞),而這些詞在任何場景中都是高頻時,並且沒有實際的含義,所以我們要他們進行清除。

我把停用詞放在一個 文件中,將我們的數據與停用詞進行比對即可(註:只要在百度中輸入 ,就可以下載到該文件)。去停用詞代碼如下代碼如下:

繼續使用 語句來查看結果,如下圖所示,停用詞已經被出去了。

接下來就要進行詞頻統計了,代碼如下:

用 進行查看,結果如下:

由於我們前面只是爬取了第一頁的評論,所以數據有點少,在最後給出的完整代碼中,我爬取了10頁的評論,所數據還是有參考價值。


三、用詞雲進行顯示

代碼如下:

其中 使用來指定字體的,可以在百度上輸入 進行下載後,放入程序的根目錄即可。顯示的圖像如下:

到此為止,整個項目的介紹就結束了。由於自己也還是個初學者,接觸python不久,代碼寫的並不好。而且第一次寫技術博客,表達的有些冗餘,請大家多多包涵,有不對的地方,請大家批評指正。以後我也會將自己做的小項目以這種形式寫在博客上和大家一起交流!最後貼上完整的代碼。


完整代碼

結果顯示如下:

上圖基本反映了《戰狼2》這部電影的情況。

PS:我本人並不喜歡這部電影,內容太空洞、太假,為了愛國而愛國,沒意思。哎,這兩年真是國產電影的低谷啊,沒有一部拿得出手的國產電影,看看人家印度拍的《摔跤吧,爸爸》那才是拍的有深度,同樣是表現愛國,國產電影還是需要向別的國家好好學學。

題圖:pexels,CC0 授權。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 編程派 的精彩文章:

一行代碼搞定 FTP 服務
三問 Python:能幹什麼?為什麼火?會繼續火嗎?

TAG:編程派 |