當大家都在討論金剛狼3的時候,他們到底在說些什麼~
最近的金剛狼3著實讓大家過足了癮,雖然很悲情、英雄遲暮,光鮮不再,可是惋惜之餘,大家對這步狼叔的封山之作還是充滿敬意和關切的,豆瓣評分8.5,影評里將近4萬多條短評,這裡截取其中內容內容質量比較好的,以文字雲的形式呈現,看下大家對於金剛狼都有著怎麼的認知標籤。
本文數據獲取過程所用到的所有相關包:
library(XML)library(Rwordseg)library(wordcloud2)library(RCurl)library(stringr)library(plyr)library(dplyr)url<-"https://movie.douban.com/subject/25765735/reviews?rating=&start=0"baseurl<-"https://movie.douban.com/subject/25765735/reviews"
建立影評網址抓取函數
#豆瓣影評的網址遍歷過程urln<-paste0(baseurl,"?rating=&start=",20*(seq(0:73)-1)) fun<-function(urln){ rd <- getURL(urln,.encoding="UTF-8") #獲取網頁rdhtml <- htmlParse(rd,encoding="UTF-8") #解析網頁root <- xmlRoot(rdhtml) #獲取根節點page<-getNodeSet(root,"//div[@class=review-short]/div[@class=short-content]/a")#目標節點獲取pagevalue<-unique(laply(page,xmlGetAttr,name=href)) #獲取目標節點內的屬性值(這裡是評論網址)}#使用向量化函數進行循環處理pagefull<-sapply(urln,fun) #轉換列表為向量pagefullnew<-unlist(pagefull,use.names =F)
建立評論區評論文本獲取函數
func<-function(page){rd <- getURL(page,.encoding="UTF-8") #獲取網頁rdhtml<-htmlParse(rd,encoding="UTF-8") # 解析網頁root<-xmlRoot(rdhtml) #獲取根節點ly<-getNodeSet(root,"//div[@class=main-bd]/div[@id=link-report]/div[@property=v:description]/p")#獲取目標節點value<- laply(ly,xmlValue,trim=T)#獲取目標節點內的屬性值(這裡是評論文本)}
#使用向量化函數進行循環處理valuefull<-sapply(pagefullnew,func)#轉換列表為向量valuefullnew<-unlist(valuefull,use.names =F)
文本分詞處理過程
myrevieww<-valuefullnewthewords <- segmentCN(myrevieww,nature=T)%>%unlist()thewords <- gsub("[a-z]|\.", "", thewords)thewords<-thewords[nchar(thewords)>1]
建立關於影評的停止詞
invalid.words <- c("電影", "演員", "導演", "我們", "他們", "一個", "沒有", "所以", "可以", "影片", "但是", "因為", "什麼", "自己", "這個", "故事", "最後", "這樣", "覺得", "為了", "一部", "這部", "片子", "其實", "當然", "時候", "看到", "已經", "這種", "知道", "這些", "一樣", "如果", "觀眾", "人物", "開始", "那麼", "那個", "可能", "情節", "結局", "結尾", "風格", "節奏", "劇情", "有點", "終於", "之後", "怎麼", "一種", "出現", "作品", "地方", "本片", "一些", "一定", "之前", "還是", "雖然", "這麼", "角色", "這麼", "不過", "類型", "以為", "顯得", "還是", "算是", "東西", "有些")theflags <- thewords %in% invalid.words thewords<-thewords[!theflags]reviewdata<-table(thewords)%>%as.data.frame(stringsAsFactors = FALSE)%>% arrange(desc(Freq))reviewdata$thewords[1]<-"金剛狼"
使用文字雲包處理
wordcloud2(reviewdata[1:1000,],color = "random-light",minSize=.5,size=1,backgroundColor = "dark",minRotation = -pi/6, maxRotation = -pi/6,fontFamily ="微軟雅黑")
導出詞頻結果
write.table(reviewdata,file="D:\R\File\reviewdata.csv", sep =",", row.names =FALSE)
為了更加完美的利用文字雲呈現廣大影迷們對連狼叔的封山之作評價標籤,這裡我使用著名的在線文字雲平台——tagul(https://tagul.com/cloud/1)來製作兩幅文字雲。
因為平台不支持中文,所以要先將漢語轉化為英文,考慮到之前使用R語言調用有道詞典結果不夠完美,這裡使用excel自帶的在線翻譯函數在excel中進行翻譯,然後導入在線平台製作。
最終的詞雲效果:
因為不太懂關於影評的停止詞設置,還是留下了很多副詞,導致最終的效果有些不是很完美,但是作為一次嘗試,以後會慢慢改善的!
聯繫方式:
微信:ljty1991
博客主頁:raindu&#x27;s home
個人公眾號:數據小魔方(datamofang)
團隊公眾號:EasyCharts
qq交流群:[魔方學院]298236508
推薦閱讀:
※爬蟲之常用的chrome技巧?
※拿諾貝爾獎可以長壽?——從爬蟲到簡單數據分析
※QQ空間動態爬蟲
※左手用R右手Python系列17——CSS表達式與網頁解析