從《流浪星球》1000條評論中看看這部電影到底咋樣
- 2019 年 10 月 6 日
- 筆記
在豆瓣上有很多關於《流浪星球》的評論,評論太多了,那麼到底這部電影怎麼樣呢?Python可以給出我們答案,這就需要用到Python的詞雲了。
什麼是詞雲?詞雲又叫文字雲,是對文本數據中出現頻率較高的「關鍵詞」在視覺上的突出呈現,形成關鍵詞的渲染形成類似雲一樣的彩色圖片,從而一眼就可以領略文本數據的主要表達意思。
首先我們需要準備的python庫包括:requests,BeautifulSoup,jieba,matplotlib,wordcloud和imageio,可以通過pip install —-進行安裝。其中jieba用於分詞;matplotlib基礎的畫圖庫;wordcloud用於生成詞雲對象;imageio用於讀取背景圖片。
接下來進行程式碼實現:
獲取評論。每頁評論有20條,通過修改url中的start參數可以實現查看不同頁面評論,同時每部電影在豆瓣中都有對應的id,因此將《流浪星球》的id值與需要抓取的頁面開始值放入到comment(id,i)中即可獲取當前頁面評論,並返回評論數據。
def comment(id,i): result = [] inres = requests.get('https://movie.douban.com/subject/{}/comments?start={}&limit=20&sort=new_score&status=P'.format(id,i),headers = headers) insoup = BeautifulSoup(inres.text,'html.parser') for comment in insoup.select('.comment-item'): result.append(comment.select('p')[0].text) return result
將評論存入text變數。range(0,1001,20)函數中從0到1001,以20個數分割,以實現抓取不同頁面評論的效果,最終將抓取1000條評論。同時《流浪星球》的id通過訪問網頁url中可以知道為26266893,最終評論數據將被去除換行後以字元型傳入text中。
import jieba import requests from imageio import imread from bs4 import BeautifulSoup import matplotlib.pyplot as plt from wordcloud import WordCloud headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}pools = [] for j in range(0,1001,20): pools.append(comment(26266893,j)) text = str(pools).replace('\n','')
這裡放張圖片,看看一千條評論有多少內容,總共32479個字。

將中文剪切後存入變數wl中。這裡刪除掉了一些無關緊要的詞,通過jieba庫將中文剪切後存入到wl變數中。
texts = text.replace('還是','').replace('就是','').replace('沒有','').replace('不是','').replace('一個','').replace('電影','') wordlist = jieba.cut(texts,cut_all=True) wl = " ".join(wordlist)
生成詞雲圖。寬高設置為1600×800,最大字體尺寸為300,最小字體尺寸為30,背景顏色為黑色,最大詞數為wl變數的長度也就是全部評論,字體路徑設置為本機黑體路徑。
wc = WordCloud(width=1600,height=800,max_font_size=300,min_font_size=30,background_color = 'black',max_words = len(wl),font_path = 'C:WindowsFontssimhei.ttf') myword = wc.generate(wl) plt.imshow(myword) plt.axis("off") plt.show()

不過這樣顯得有些單調,因此我們將背景設置為圖片,不過最後感覺圖片解析度太低了,因此藉助plt.figure(figsize=(20,10)) 和plt.tight_layout(pad=0) 語句提高了圖片解析度,其解析度的調整可以參考:https://stackoverrun.com/cn/q/7908092
jpg = imread(r'C:UsersAdministratorDesktopllxq_4.0x.png') wc = WordCloud(mask = jpg,background_color = 'white',max_words = len(wl),font_path = 'C:WindowsFontssimhei.ttf') myword = wc.generate(wl) plt.figure(figsize=(20,10)) plt.imshow(myword) plt.tight_layout(pad=0) plt.axis("off") plt.show()


通過上面兩張詞雲來看,在一千條評論中,中國、科幻、可以、特效等關鍵詞出現的最多,很明顯大家對於這部電影都還是很支援的,作為中國科幻迷,也是感到很自豪,哈哈。