九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
中國人民志愿軍抗美援朝出國作戰(zhàn)70周年,我用 Python 為英雄們送上祝福

來源:Python 技術(shù)「ID: pythonall」

今年是中國人民志愿軍抗美援朝出國作戰(zhàn) 70 周年,剛好上個月上映了同題材的電影「金剛川」。該影片主要講的是抗美援朝戰(zhàn)爭最終階段,志愿軍準備在金城發(fā)動最后一場大型戰(zhàn)役。為在指定時間到達,向金城前線投放更多戰(zhàn)力,志愿軍戰(zhàn)士們在物資匱乏、武器裝備相差懸殊的情況下,不斷抵御敵機狂轟濫炸,以血肉之軀一次次修補戰(zhàn)火中的木橋。

今天我們就用 Python 來分析一下「金剛川」這部電影,看看網(wǎng)友們對該劇的評論如何。

要想分析該劇,首先則需要獲取數(shù)據(jù)源,豆瓣作為國內(nèi)最大的文藝青年聚居地,其電影影評評分一直是比較客觀的,所以這次我們選取豆瓣電影作為數(shù)據(jù)來源。

數(shù)據(jù)獲取

從豆瓣電影我們可以看出,該劇共有十三萬多人進行評分,最終評分 6.5,不算低,共有短評六萬多條,因為豆瓣的限制,游客身份只可以查看前 200 條短評,而登錄之后可以查看前 500 條短評,同時我們還看到,影評有根據(jù)不同的維度分為熱門、最新和好友,為了獲取更多的數(shù)據(jù)樣本,我們將熱門和最新的評論都抓取下來。

其中我們要獲取的數(shù)據(jù)有評論人,評論時間,評論星級以及評論內(nèi)容,打開電影短評頁面然后將開發(fā)者工具調(diào)取出來。

我們發(fā)現(xiàn)所有的評論都是在一個 class="comment" 的 div 中的,然后針對每一條評論,其對應(yīng)的位置都如上圖所示,唯一值得說明的是在我爬取數(shù)據(jù)的過程中,有的評論是獲取不到評論時間的,

因此我們可以定義一個獲取評論詳情的函數(shù),該函數(shù)接收一個 URL 作為參數(shù),然后返回評論列表。

因為獲取評論信息是需要登錄的,所以務(wù)必要將自己的 cookid 添加到 headers 中,否則是爬取不到評論的。

headers = {
    'User-Agent''Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36',
    'Referer''https://movie.douban.com',
    # 注意,這里需要加上你自己的 cookie
    'Cookie''.'
}

def get_comment_by_url(url):
    # 評論人,評論時間,評論星級以及評論內(nèi)容
    users,, times, stars, content_list = [], [], [], []
    data = requests.get(url, headers=headers)
    selector = etree.HTML(data.text)
    comments = selector.xpath('//div[@class="comment"]')
    # 遍歷所有評論
    for comment in comments:
        user = comment.xpath('.//h3/span[2]/a/text()')[0]
        star = comment.xpath('.//h3/span[2]/span[2]/@class')[0][7:8]
        date_time = comment.xpath('.//h3/span[2]/span[3]/text()')
        if len(date_time) != 0:
            date_time = date_time[0].replace("\n""").strip()
        else:
            date_time = None
        comment_text = comment.xpath('.//p/span/text()')[0].strip()
        users.append(user)
        stars.append(star)
        times.append(date_time)
        content_list.append(comment_text)
    return users, stars, times, content_list

接下來我們來分析下評論頁面的 URL,如下所示:

https://movie.douban.com/subject/35155748/comments?start=40&limit=20&status=P&sort=new_score

每翻頁一次,start 都會增加 20,最大值為 480,其中最后的參數(shù) sort, 當 sort=new_score 表示按照熱門來排序,也即是最熱維度,當 sort=time 則表示根據(jù)時間來排序,也就是最新維度。

所以,我們可以使用以下函數(shù)來獲取所有評論。

def get_comments():
    user_list, star_list, time_list, comment_list = [], [], [], []
    for sort in ['time''new_score']:
        sort_name = "最熱" if sort == 'new_score' else '最新'
        for start in range(25):
            print('準備抓取第 {} 頁數(shù)據(jù), 排序方式:{}'.format(start + 1, sort_name))
            users, stars, times, comments = get_comment_by_url(base_url.format(start * 20, sort))
            if not users:
                break
            user_list += users
            star_list += stars
            time_list += times
            comment_list += comments
            # 每次獲取數(shù)據(jù)之后暫停 5 秒
            time.sleep(5)

    result = {'users': user_list, 'times': time_list, 'stars': star_list, 'comments': comment_list}
    return result

來看看我們獲取到的數(shù)據(jù),因為我們是獲取的熱門和最新兩個維度的數(shù)據(jù),而最新維度數(shù)據(jù)不足 500 條,所以總的數(shù)據(jù)量也就是 600 條左右。

數(shù)據(jù)分析

如上,我們獲取到了最終的數(shù)據(jù),接下來就可以做數(shù)據(jù)分析了。

評論量

首先來看看評論和日期的關(guān)系,也就是統(tǒng)計下每一天的評論量,以下代我是在 Jupyter Notebook 中運行的。

bar = Bar()
bar.add_xaxis(index)
bar.add_yaxis("數(shù)量 & 時間", values)
bar.set_global_opts(xaxis_opts=opts.AxisOpts(name="評論日期", axislabel_opts={"rotate"30}))
bar.render_notebook()

由上圖可以看出,10.23 和 10.24 評論數(shù)量爆表,原因是該劇是 10.23 上映的,之后評論數(shù)量逐級遞減,不過令人匪夷所思的是電影還未開始就已經(jīng)有人開始刷評論了,難道這就是傳說中的水軍么。

評論星級

在來統(tǒng)計下評分和日期的關(guān)系,為了方便統(tǒng)計,我們?nèi)∶刻斓钠骄u論星級。

# 星級
df_time = df.groupby(['times']).size()
dic = {}

for k in df_time.index:
    stars = df.loc[df['times'] == str(k), 'stars']
    stars = list(map(int, stars))
    dic[k] = round(sum(stars) / len(stars), 2)

bar_star = Bar()
bar_star.add_xaxis([x for x in dic.keys()])
bar_star.add_yaxis("星級 & 時間", [x for x in dic.values()])
bar_star.set_global_opts(xaxis_opts=opts.AxisOpts(name="評論日期", axislabel_opts={"rotate"30}))
bar_star.render_notebook()

總體來看,該劇評論星級維持在 2.5~3.3 之間,結(jié)合 6.5 的評分來看,是比較吻合的。

演員

接下來我們分析下演員的受歡迎程度,實話講我是沖著吳京去看的這部劇,來看看最終結(jié)果如何。

roles = {'張譯':0'吳京':0'李九霄':0'魏晨':0'鄧超':0}
names = list(roles.keys())

for row in df['comments']:
    for name in names:
        roles[name] += row.count(name)

line = (
    Line()
    .add_xaxis(list(roles.keys()))
    .add_yaxis('', list(roles.values()))
    .set_global_opts(title_opts=opts.TitleOpts(title=""))
)

line.render_notebook()

看來張譯的受歡迎程度最高,畢竟實力派演員,相反吳京的票數(shù)反而不是很高,有點奇怪,得票最少的是李九霄。

詞云

詞云圖可以更直觀的看到每個詞的出現(xiàn)頻率,最后我們?yōu)檫@部劇生成它專屬的詞云圖。

content = "".join(list(df['comments']))

# jieba 分詞
words = jieba.cut(content)
word_list = []
for x in words:
    word_list.append(x)

cloud_word = ','.join(word_list)
// 設(shè)置選項
wc = WordCloud(font_path='/System/Library/Fonts/PingFang.ttc', background_color="white", scale=2.5,
                   contour_color="lightblue", ).generate(cloud_word)

plt.figure(figsize=(169))
plt.imshow(wc)
plt.axis('off')
plt.show()

果然還是張譯出現(xiàn)的頻率較高。

總結(jié)

本文通過獲取「金剛川」的豆瓣影評對該劇做了一個定向分析,從結(jié)果可以看出大家評論星級和最終電影評分較吻合,演員張譯最受大家歡迎,剛上映時大家的評論熱情也最高,往后評論熱情越來越低。

雖說該劇最終得分 6.5 實屬不高,但這不應(yīng)該是一部以分數(shù)高低來評價其好壞的電影,中國人民做了太多太多的犧牲和努力才換來了今天的和平盛世,甚至很多志愿軍都永遠的留在了那里,片尾的那段解放軍接英雄們回家的片段真是讓人感傷至極,愿英雄們都可以落葉歸根,魂歸故里。

愿山河無恙,家國夢圓!

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
用Python分析元旦旅游熱門城市,告訴你哪些景點性價比更高
Python 爬蟲實踐:《戰(zhàn)狼2》豆瓣影評分析
python爬蟲案例:采集股票數(shù)據(jù)并制作可視化柱圖
年關(guān)將至,用Python來爬取股票數(shù)據(jù)進行分析,沖一波!
Pyecharts作圖部分省市有數(shù)據(jù)顯示,其他的省份都沒有顯示,怎么肥四?
python采集往期股票數(shù)據(jù)進行分析預(yù)測
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服