大江大河,一代人的縮影。

尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️

加入LINE好友

大江大河,一代人的縮影。 戲劇 第1張

春節時,在家閒著無聊,刷了一部電視劇。

即「大江大河」,豆瓣評分8.9分。

大江大河,一代人的縮影。 戲劇 第2張

主要講述了1978到1992年間改革開放的大背景下。

以宋運輝、雷東寶、楊巡為代表的先行者們在變革浪潮中不斷探索和突圍的浮沉故事。

總的來說是一部很不錯的電視劇。

恰巧那時在B站看完了吳曉波2018年的跨年演講。

里面提到了,如果你是一個1978年的中國青年,有可能需要按下一個血手印。

故事來源於18個安徽鳳陽小崗村農民的分田計劃。

大江大河,一代人的縮影。 戲劇 第3張

我覺得「大江大河」就很好的展現出了那個時代的現狀。

農村改革的先行者東寶書記,知識改變命運的宋運輝,個體經營打拼的小楊巡。

都有著自己的人生,去闡述那個時代的點滴。

這也是吸引我繼續觀看這部電視劇的原因。

去了解那個時代的青年,他們對體制的突破以及改變自己過去的勇氣。

然後結合最近「流浪地球」豆瓣電影短評的差評的現象。

我也爬取了「大江大河」的豆瓣短評。

來看看有什麼貓膩沒有。

在此需要感謝一下2808PROXY提供的代理服務。

大江大河,一代人的縮影。 戲劇 第4張

如果沒有他們的支持,我是肯定獲取不到用戶註冊信息的。

因為豆瓣的反爬實在是厲害。

即使我用了穩定的代理,豆瓣還是針對我的Cookie進行了封鎖。

大江大河,一代人的縮影。 戲劇 第5張

假想我沒有用代理的話,估摸著也就只有涼涼二字。

/ 01 / 網頁分析

雖然評論有兩萬多條,但是豆瓣在登陸的情況下,也只是放出500條數據。

本次只獲取全部評論以及差評評論標籤頁下的數據,合計約為900多條。

大江大河,一代人的縮影。 戲劇 第6張

然後便是獲取用戶的註冊時間。

900多個用戶,900多個請求。

我相信不用代理,絕對Game Over。

大江大河,一代人的縮影。 戲劇 第7張

/ 02 / 數據獲取

評論及用戶信息獲取的代碼如下。

importtimeimportrequestsimportproxy2808frombs4importBeautifulSoupUSERNAME='用戶名'PASSWORD='密碼'headers={'Cookie':'你的Cookie值','User-Agent':'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/63.0.3239.132Safari/537.36'}defget_comments(page,proxy_url_secured):"""評論獲取"""#熱門評論獲取url='https://movie.douban.com/subject/26797690/comments?start='+str(page)+'&limit=20&sort=new_score&status=P'#好評獲取#url='https://movie.douban.com/subject/26797690/comments?start='+str(page)+'&limit=20&sort=new_score&status=P&percent_type=h'#一般評論獲取#url='https://movie.douban.com/subject/26797690/comments?start='+str(page)+'&limit=20&sort=new_score&status=P&percent_type=m'#差評獲取#url='https://movie.douban.com/subject/26797690/comments?start='+str(page)+'&limit=20&sort=new_score&status=P&percent_type=l'#使用2808proxy代理response=requests.get(url=url,headers=headers,proxies={'http':proxy_url_secured,'https':proxy_url_secured})soup=BeautifulSoup(response.text,'html.parser')fordivinsoup.find_all(class_='comment-item'):time.sleep(3)#評論信息comment_info=div.find(class_='comment-info')#用戶名user_name=comment_info.find('a').get_text()print(user_name)#用戶主頁地址user_url=comment_info.find('a').attrs['href']print(user_url)#獲取用戶註冊時間,看水軍必備registered_time=get_user(user_url,proxy_url_secured)print(registered_time)#用戶評分score=comment_info.find_all('span')[1].attrs['class'][0][-2:-1]print(score)#用戶評價eva=comment_info.find_all('span')[1].attrs['title']print(eva)#有用數useful_num=div.find(class_='votes').get_text()print(useful_num)#評價日期date=comment_info.find(class_='comment-time').attrs['title'].split('')[0]print(date)#評價時間comment_time=comment_info.find(class_='comment-time').attrs['title'].split('')[1]print(comment_time)#用戶評論comment=div.find(class_='short').get_text().replace('\n','').strip().replace(',',',').replace('','')print(comment)#寫入csv文件withopen('comments_douban_l.csv','a',encoding='utf-8-sig')asf:f.write(user_name+','+user_url+','+registered_time+','+score+','+date+','+comment_time+','+useful_num+','+comment+'\n')f.close()defget_user(user_url,proxy_url_secured):"""獲取用戶註冊時間"""#使用2808proxy代理response=requests.get(url=user_url,headers=headers,proxies={'http':proxy_url_secured,'https':proxy_url_secured})soup=BeautifulSoup(response.text,'html.parser')user_message=soup.find(class_='basic-info')#獲取用戶註冊時間try:user_registered=user_message.find(class_='pl')registered_time=user_registered.get_text().split('')[1].replace('加入','')except:registered_time='unknow'returnregistered_timedefmain():num=0foriinrange(0,500,20):cli=proxy2808.Client(username=USERNAME,password=PASSWORD)cli.release_all()p=cli.get_proxies(amount=1,expire_seconds=300)[0]proxy_url_secured="%s://%s:%s@%s:%d"%('http',USERNAME,PASSWORD,p['ip'],p['http_port_secured'])print(proxy_url_secured)get_comments(i,proxy_url_secured)num+=1if__name__=='__main__':main()

獲取全部評論標籤頁下的數據(500條)。

大江大河,一代人的縮影。 戲劇 第8張

紅框部分為用戶的註冊時間。

假設我能爬取所有評論,那麼水軍可能要被我逮到了。

個人理解,水軍就是過多的新註冊用戶…

然而豆瓣並沒有給我們這個機會。

獲取差評標籤頁的數據(482條)。

大江大河,一代人的縮影。 戲劇 第9張

看看給差評的用戶註冊時間。

相較好評的用戶註冊時間,有那麼點意思了。

註冊時間相對都比較晚。

難不成豆瓣真有水軍…

差評水軍,我勸你善良。

/ 03 / 情感分析

評論的情感分析使用百度的自然語言處理。

大江大河,一代人的縮影。 戲劇 第10張

下面利用網站做個示例。

大江大河,一代人的縮影。 戲劇 第11張

具體的可以去官網看文檔,這里只是簡述一番。

通過你的百度帳號登陸百度的AI開發平台,新建自然語言處理項目。

獲取「API Key」及「Secret Key」後。

調用情感傾向分析接口,得到情感結果。

importurllib.requestimportpandasimportjsonimporttimedefget_access_token():"""獲取百度AI平台的AccessToken"""#使用你的APIKey及SecretKeyhost='https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[APIKey]&client_secret=[SecretKey]'request=urllib.request.Request(host)request.add_header('Content-Type','application/json;charset=UTF-8')response=urllib.request.urlopen(request)content=response.read().decode('utf-8')rdata=json.loads(content)returnrdata['access_token']defsentiment_classify(text,acc):"""獲取文本的感情偏向(消極or積極or中立)參數:text:str本文"""raw={"text":"內容"}raw['text']=textdata=json.dumps(raw).encode('utf-8')#情感傾向分析接口host="https://aip.baidubce.com/rpc/2.0/nlp/v1/sentiment_classify?charset=UTF-8&access_token="+accrequest=urllib.request.Request(url=host,data=data)request.add_header('Content-Type','application/json')response=urllib.request.urlopen(request)content=response.read().decode('utf-8')rdata=json.loads(content)returnrdata#獲取access_tokenaccess_token=get_access_token()#差評標籤df=pandas.read_csv('comments_douban_l.csv',header=None,names=['user_name','user_url','registered_time','score','date','comment_time','useful_num','comment'])#好評標籤#df=pandas.read_csv('comments_douban_a.csv',header=None,names=['user_name','user_url','registered_time','score','date','comment_time','useful_num','comment'])#輸出情感極性分類結果,0:負向,1:中性,2:正向sentiments=[]fortextindf['comment']:time.sleep(1)result=sentiment_classify(str(text),access_token)value=result['items'][0]['sentiment']sentiments.append(value)#print(result)print(result['items'][0]['sentiment'],text)#添加評分列及情感列df['score1']=df['score']df['emotional']=sentiments#差評標籤df.to_csv('comments_douban_ll.csv',header=0,index=False,encoding='utf-8-sig')#好評標籤#df.to_csv('comments_douban_al.csv',header=0,index=False,encoding='utf-8-sig')

情感分析結果如下。

大江大河,一代人的縮影。 戲劇 第12張

總的來說5星評分的結果多為正向(2)的。

當然也出現了一些負向(0)的結果。

不過還是在可接受範圍內。

沒什麼大影響。

大江大河,一代人的縮影。 戲劇 第13張

1星評分的評論情感傾向多為負向。

這里把正向的用紅框圈出來了,大家可以自行體會。

畢竟機器的識別水平有限,想達到100%識別,可能性幾乎為0。

這就好比語文試卷拿滿分,聞所未聞。

總而言之,百度這個情感傾向分析,很不錯。

/ 04 / 數據可視化

01 評論日期分布情況

大江大河,一代人的縮影。 戲劇 第14張

大江大河,一代人的縮影。 戲劇 第15張

熱評隨著電視劇的開播,便慢慢沒有什麼變化。

而差評卻在後頭有一些波動。

假設我們能夠獲取到差評有異常時所有的用戶註冊時間。

那麼便能看是否真的有水軍存在。

當然此處僅僅是一個假想而已,豆瓣早已把你我拒之門外。

02 評論時間分布情況

大江大河,一代人的縮影。 戲劇 第16張

大江大河,一代人的縮影。 戲劇 第17張

大部分評論都是在晚上評論的,符合常態。

估摸著晚上都是大家的娛樂時間,便有了閒情逸致去寫評論。

03 評論評分情況

大江大河,一代人的縮影。 戲劇 第18張

大江大河,一代人的縮影。 戲劇 第19張

全部短評的5星評分占大頭。

全部差評的1星和2星占大頭。

這對得起豆瓣的8.9分了。

04 評論情感分析情況

大江大河,一代人的縮影。 戲劇 第20張

大江大河,一代人的縮影。 戲劇 第21張

其中「2」代表積極的,「1」代表中性的,「-2」代表消極的。

全部短評的正向結果占大頭。

全部短評的排序是基於點讚數而來的。

所以對於整部劇,大家還是比較認可的。

全部差評的負向結果占大頭。

給了差評,情感傾向果斷差了。

05 評論用戶註冊時間

大江大河,一代人的縮影。 戲劇 第22張

大江大河,一代人的縮影。 戲劇 第23張

由於數據比較少,所以大家看著樂呵就好。

要想判斷出有水軍還是有難度的。

06 評論詞雲

好評詞雲。

充滿了滿滿的正能量。

大江大河,一代人的縮影。 戲劇 第24張

差評詞雲。

「看不下去」「失望」「惡心」「難看」,體現了大家對於這部劇的負面評價。

大江大河,一代人的縮影。 戲劇 第25張

/ 05 / 總結

文章源碼及相關文件已上傳「GitHub」。

點擊左下角閱讀原文,即可獲取。

萬水千山總是情,點個「好看」行不行。

推薦閱讀

大江大河,一代人的縮影。 戲劇 第26張

大江大河,一代人的縮影。 戲劇 第27張

大江大河,一代人的縮影。 戲劇 第28張

··· END ···

大江大河,一代人的縮影。 戲劇 第29張

支持小F原創

About 尋夢園
尋夢園是台灣最大的聊天室及交友社群網站。 致力於發展能夠讓會員們彼此互動、盡情分享自我的平台。 擁有數百間不同的聊天室 ,讓您隨時隨地都能找到志同道合的好友!