前言
對于《大秦賦》,相信大家都不會陌生祈搜,由延藝導演较店,張魯一主演的歷史古裝劇。
劇集講述了秦始皇嬴政在呂不韋容燕、李斯梁呈、王翦等的輔佐下平滅六國、一統(tǒng)天下缰趋,建立起中華歷史上第一個大一統(tǒng)的中央集權(quán)國家的故事捧杉。 戰(zhàn)國晚期陕见,紛亂五百余年的華夏大地仍戰(zhàn)火不息、 生靈涂炭味抖。彼時六國勢弱评甜、秦國獨強,天下統(tǒng)一之勢漸顯仔涩。巨商呂不韋攜時在趙國為質(zhì)的嬴異人逃歸秦國忍坷,幼小的始 皇帝嬴政被棄留邯鄲,屢遭生死劫難熔脂,也目睹戰(zhàn)爭帶給百姓的痛苦與絕望佩研,心中天下凝一之志由此而生。此后嬴政歸秦霞揉,在咸陽政治漩渦中經(jīng)歷精神陣痛旬薯,蛻變成一個真正王者。為抓住一統(tǒng)天下的時機和力量适秩,實現(xiàn)一統(tǒng)天下的理想抱負绊序,精心謀劃,暗中行動秽荞,終于平定嫪毐之亂骤公,親政,罷相扬跋,收復王權(quán)阶捆。此后又鏟除宗室復辟勢力,為東出滅國掃清障礙钦听。在李斯洒试、王翦、蒙恬等一班文臣武將的輔佐下掃滅六國彪见,建立起中華歷史上第一個大一統(tǒng)的中央集權(quán)國家儡司。
當然,我今天的主題自然不是講歷史故事余指,而是爬蟲。
現(xiàn)在開始進入主題......
需求分析
《大秦賦》這部劇在最近還算是比較熱的一門電視劇了跷坝。作為喜歡寫爬蟲的人來說酵镜,獲取觀眾的評論,做數(shù)據(jù)分析是再好不過了柴钻,所以今天就來爬取豆瓣中觀眾的短評淮韭。
評論數(shù)隨時間的變化趨勢
一般來說,一部劇在開播后的幾天都是比較火的贴届,觀眾的評論自然就不會少靠粪。但是當這部劇開播之后卻沒有你想象的那般美好蜡吧,那觀眾就不會有看下去的欲望,既然觀眾都不看占键,那你覺得還會有評論嗎昔善?
24小時內(nèi)的評論數(shù)的趨勢
這里主要是分析觀眾觀看這部劇的時間大概在什么范圍內(nèi)。一般看完就評論或者邊看邊評論畔乙,時間上就不會有太大的差別君仆,當然這個也是大多數(shù)人的做法,應該會有極少的人在幾天后才對前面的劇情進行評論的吧牲距。那樣誰還去翻前面的東西返咱。
觀眾對該劇的評價
就像在淘寶買東西一樣,如果你買的產(chǎn)品性價比特別高牍鞠,很實惠咖摹。那我相信你不會吝嗇那5星好評,當然如果你覺得我的文章好难述,也不會吝嗇你的點贊萤晴。
觀眾的主要評論
在這里主要是看看觀眾對哪類人或者是哪些事情提及的比較多,方便之后的進一步分析龄广。
數(shù)據(jù)獲取的實現(xiàn)
巧婦難為無米之炊硫眯。
同樣的,數(shù)據(jù)是做數(shù)據(jù)分析的基礎择同,沒有數(shù)據(jù)你做個嘚两入。
獲取什么數(shù)據(jù)
從上面的需求分析可以得出我們現(xiàn)在需要獲取三項數(shù)據(jù):'星級'、'評論'敲才、'評論時間'
網(wǎng)頁分析
打開開發(fā)者工具裹纳,利用選擇器可以快速定位數(shù)據(jù)的位置。
下面給出核心代碼獲取評論紧武、星級與時間剃氧。
def get_info(self):
html = etree.HTML(self.login())
time = html.xpath('//div[@class="comment"]/h3/span/span[3]/@title')
star = html.xpath('//div[@class="comment"]/h3/span/span[2]/@title')
content = html.xpath('//p[@class=" comment-content"]/span/text()')
content = [i.replace('\n', '') for i in content]
df = pd.DataFrame(
{'content_time': time,
'star': star,
'comment-content': content
}
)
return df
關于反爬
經(jīng)過測試這邊的反爬只有User-Agent和cookies,只要將這兩個信息添加進headers即可阻星。
所以對于這種反爬手段還是比較容易解決的朋鞍。因此這里可以稍微轉(zhuǎn)變一下寫法,使用session來保存cookies妥箕,核心代碼如下所示:
def login(self):
data = {
'ck': '',
'remember': 'true',
'name': '18218138350',
'password': '698350As?',
}
self.session.post(self.login_url, data=data)
翻頁爬取
通過網(wǎng)頁查看短評滥酥,你會發(fā)現(xiàn)評論不單單只有1頁,而是有好幾頁畦幢。但是通過運行上面的代碼你會發(fā)現(xiàn)坎吻,只能獲取到第一頁的數(shù)據(jù)。
# 第一頁
https://movie.douban.com/subject/26413293/comments?start=0&limit=20&status=P&sort=new_score
# 第二頁
https://movie.douban.com/subject/26413293/comments?start=20&limit=20&status=P&sort=new_score
# 第三頁
https://movie.douban.com/subject/26413293/comments?start=40&limit=20&status=P&sort=new_score
通過觀察上面的鏈接你會發(fā)現(xiàn)宇葱,只有start參數(shù)是不一樣的瘦真,并且是20的倍數(shù)刊头。只要規(guī)律的改變start參數(shù)的值便可以實現(xiàn)翻頁的效果。
但是在這里有一個問題诸尽,當start=480時原杂,便無法繼續(xù)翻頁了,所有這個也是豆瓣反爬的手段之一弦讽,有興趣的高手可以自己試試污尉。
核心代碼如下所示:
def get_content_url(self, i):
url = f'https://movie.douban.com/subject/26413293/comments?start={i}&limit=20&status=P&sort=new_score'
return url
if __name__ == '__main__':
douban = Douban()
douban.login()
df = pd.DataFrame(columns=['content_time', 'star', 'comment-content'])
for i in range(25):
print(f'正在打印第{i+1}頁')
url = douban.get_content_url(i*20)
df1 = douban.get_info(url)
df = pd.concat([df, df1])
time.sleep(3)
df = df.reset_index(drop=True)
df.to_csv('../data/conment-content_all.csv', encoding='utf-8-sig')
print('獲取成功')
通過對上面代碼的測試,已經(jīng)將數(shù)據(jù)全部獲取下來了往产。
接下來就是進入數(shù)據(jù)分析的精彩時刻了被碗。
數(shù)據(jù)分析實現(xiàn)
評論數(shù)隨時間的變化
從上圖,你會發(fā)現(xiàn)從該劇開播以來的前5天仿村,評論數(shù)量都還是比較多的锐朴,但是到了第6天評論數(shù)量就猛跌,從這一方面也說明該劇的受歡迎程度不高蔼囊。
24小時內(nèi)評論數(shù)的變化
分析24小時內(nèi)評論數(shù)的變化情況可以發(fā)現(xiàn)焚志,觀眾在19點至24點都是觀看該劇的高峰。19點就可以看劇畏鼓,想想我也是很羨慕的呀酱酬。
評分情況
從圖上可以看到,評分情況慘不忍睹云矫。
大秦賦自開播以來口碑一路暴跌膳沽,從9.3到8.5到7.6再到如今的6.1,上映之前的萬眾期待似乎已經(jīng)是遠古年間的故事了让禀。
從個人角度來說挑社,我不喜歡大秦賦。被大秦帝國三部曲一點一點把口味養(yǎng)叼了的老觀眾對大秦賦有失落感是很正常的——為了討好年輕群體將臺詞直白化巡揍、為了吸引更多受眾加入了大量的“宮斗情感戲”痛阻、為了將嬴政的塑造走出一條前人沒有走過的路,在劇情和人設上大下功夫腮敌;這些為了迎合市場而試圖轉(zhuǎn)型的舉動在原有受眾群體里等同于背叛阱当。尤其是對于我這種從孫皓暉老師原著轉(zhuǎn)至影視劇的擁躉來說,這種不滿顯得尤為有理有據(jù)糜工。
評論內(nèi)容
最后
本次分享到這里就結(jié)束了斗这,如果你看到了這里,那么說明本文對你還是有幫助的啤斗,所有我也非常希望讀者朋友們可以給我點贊、評論與轉(zhuǎn)發(fā)赁咙,在下不勝感激钮莲。
路漫漫其修遠兮免钻,吾將上下而求索。
我是啃書君崔拥,一個專注于學習的人极舔,你懂的越多,你不懂的越多链瓦。
更多精彩內(nèi)容拆魏,我們下期再見!