<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          我用 Python 抓取《大秦賦》“相關(guān)數(shù)據(jù)”,發(fā)現(xiàn)了這些秘密......

          共 2493字,需瀏覽 5分鐘

           ·

          2020-12-24 07:25

          前言

          最近,最火的電視劇莫過于《大秦賦了》,自12月1日開播后,收獲了不錯的口碑。然而隨著電視劇的跟新,該劇在網(wǎng)上引起了激烈的討論,不僅口碑急劇下滑,頗有高開低走的趨勢,同時該劇的評分也由最初的8.9分,下降到了現(xiàn)在的6.5分。
          雖然我還沒有看過這個新劇,但是對于小伙伴們討論的內(nèi)容,卻頗有興趣(主要還是大家老是討論這個劇)。因此,我用Python爬取了《大秦賦》的相關(guān)數(shù)據(jù),進(jìn)行了一波分析。

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

          巧婦難為無米之炊,做數(shù)據(jù)分析之前最重要的就是“數(shù)據(jù)獲取”。于是,我準(zhǔn)備用Python爬取豆瓣上的短評數(shù)據(jù)以及一些評論時間信息評價(jià)星級信息
          關(guān)于數(shù)據(jù)的爬取主要說以下幾個內(nèi)容:
          1)關(guān)于翻頁操作
          第一頁:
          https://movie.douban.com/subject/26413293/comments?status=P
          第二頁:
          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

          上面我們分別展示了第1-3頁的頁面鏈接,我們主要是觀察其中的規(guī)律,其中start是獲取評論的起始位置limit代表獲取多少條評論數(shù)據(jù)。觀察結(jié)果:3個鏈接的不同在于這個start的不同,在后續(xù)翻頁時,我們只需要修改start參數(shù)即可
          2)關(guān)于反扒說明
          對于豆瓣的爬取,其實(shí)找到真實(shí)的短評鏈接,是極其容易的。但是這里有一點(diǎn)我必須說明,你可以不登陸爬取數(shù)據(jù),但是只能是操作一段時間,過一段時間,會檢測到你是爬蟲。因此,你一定要登陸后,攜帶cookie去進(jìn)行數(shù)據(jù)的爬取。如果你有時候不知道請求頭中,該放一些什么,那么就請都加上,等有空再慢慢總結(jié)。
          ?headers?=?{
          ????"Accept":"application/json,?text/plain,?*/*",
          ????"Accept-Language":"zh-CN,zh;q=0.9",
          ????"Connection":"keep-alive",
          ????"Host":"movie.douban.com",
          ????"User-Agent":'Mozilla/5.0?(Windows?NT?10.0;?Win64;?x64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/87.0.4280.88?Safari/537.36',
          ????"Cookie":'這里是你自己的cookie'
          ????}

          cookie有些人可能又不知道在哪里,還是告訴你一下吧!好多參數(shù)都在下面呢,如果你想學(xué)好爬蟲,那么這些參數(shù)代表什么,你總應(yīng)該需要知道吧。
          最終再補(bǔ)充一點(diǎn):我本來打算把豆瓣上的《大秦賦》短評,全部爬下來作為分析的素材。然而并沒有成功爬取到所有的短評,一波三折,最終只爬到了500條,當(dāng)然我覺得這也是豆瓣的一種反扒措施,最大可見短評數(shù)就500條,多的不給你看。(有大神的話,可以下去研究一下)

          數(shù)據(jù)處理

          爬取后的數(shù)據(jù),再怎么規(guī)整,也和用于分析的數(shù)據(jù)之間,有一定的差距。因此再分析之前,一定的數(shù)據(jù)清洗是很有必要的。在數(shù)據(jù)清洗之前,我們簡單看看數(shù)據(jù)是什么樣子的。
          df?=?pd.read_csv("final_all_comment.csv",index_col=0)
          df.head(10)

          結(jié)果如下:

          其實(shí)數(shù)據(jù)還是挺漂亮的,但是我們還是需要做如下處理:
          1)剔除重復(fù)值
          我們認(rèn)為:如果'評論時間'和'評論內(nèi)容'完全一致的話,就認(rèn)為他是同一條評論,需要將其剔除。
          print("刪除之前的記錄數(shù):",df.shape)
          df.drop_duplicates(subset=['評論時間','評論內(nèi)容'],inplace=True,keep='first')
          print("刪除之前的記錄數(shù):",df.shape)
          2)評論時間處理
          因?yàn)椤洞笄刭x》是2020年12月1號開播的,現(xiàn)在是12月16號晚,因此所有的評論數(shù)據(jù)肯定都是2020年12月開始有的,因此我們只保留有用的“日期”數(shù)據(jù)(哪一天)。而對于時分秒來說,我們只保留“小時”數(shù)據(jù)
          df["評論天數(shù)"]?=?df["評論時間"].str[8:-9].astype(int)
          df["小時"]?=?df["評論時間"].str[11:-6].astype(int)
          3)評論星級處理
          觀察原頁面的評論星級,可以看到所有的星級并不是以數(shù)字展示的,而是用星星進(jìn)行前端渲染出來的,但是頁面的源代碼,卻展示的是星級數(shù)。
          對應(yīng)到頁面源代碼中,我們看看又是怎么樣子的呢?
          可以看到:3星的數(shù)字是30,其它的以此類推,1星的數(shù)字是10,2星的數(shù)字是20......我看著就是很不爽,因此我在爬取數(shù)據(jù)的時候,已經(jīng)將這些數(shù)字,全都除以10后計(jì)算。
          4)評論內(nèi)容機(jī)械壓縮去重
          對于一條評論來說,有些人可能手誤,或者湊字?jǐn)?shù),會出現(xiàn)將某個字或者詞語,重復(fù)說多次,因此在進(jìn)行分詞之前,需要做“機(jī)械壓縮去重”操作。下面是我很早之前寫的一段代碼,大家可以去看我的CSDN博客,里面有很好的解釋。
          def?func(st):
          ????for?i?in?range(1,int(len(st)/2)+1):
          ????????for?j?in?range(len(st)):
          ????????????if?st[j:j+i]?==?st[j+i:j+2*i]:
          ????????????????k?=?j?+?i
          ????????????????while?st[k:k+i]?==?st[k+i:k+2*i]?and?k????????????????????k?=?k?+?i
          ????????????????st?=?st[:j]?+?st[k:]????
          ????return?st
          ????
          st?=?"我愛你我愛你我愛你好你好你好哈哈哈哈哈"
          func(st)

          結(jié)果如下:
          利用上述函數(shù),我們可以對爬取到的數(shù)據(jù),應(yīng)用此操作。
          def?func(st):
          ????for?i?in?range(1,int(len(st)/2)+1):
          ????????for?j?in?range(len(st)):
          ????????????if?st[j:j+i]?==?st[j+i:j+2*i]:
          ????????????????k?=?j?+?i
          ????????????????while?st[k:k+i]?==?st[k+i:k+2*i]?and?k????????????????????k?=?k?+?i
          ????????????????st?=?st[:j]?+?st[k:]????
          ????return?st

          df["評論內(nèi)容"]?=?df["評論內(nèi)容"].apply(func)

          數(shù)據(jù)可視化操作

          俗話說:“字不如表,表不如圖”。爬取到的數(shù)據(jù),最終做可視化的呈現(xiàn),才能夠讓大家對數(shù)據(jù)背后的規(guī)律,有一個清晰的認(rèn)識。下面我們從以下幾個方面來進(jìn)行數(shù)據(jù)可視化分析。
          1. 評論數(shù)隨時間的變化趨勢
          2. 二十四小時內(nèi)的評論數(shù)的變化趨勢
          3. 星級評分的餅圖
          4. 大家主要都在評論一些啥
          關(guān)于數(shù)據(jù)可視化工具,我就不用pyecharts了,我還是回歸原始,用最原始的matplotlib庫進(jìn)行數(shù)據(jù)可視化的展示。畢竟我們沒有什么復(fù)雜的展示,代碼越簡短越好。
          1)評論數(shù)隨時間的變化趨勢
          從圖中可以看出:短評數(shù)量在12月4日之前,一直處于上升趨勢,在12月4日達(dá)到頂峰。和文章最開始的說明一致,前面幾天觀眾對于該劇的期待值較高,但是在12月4日后,突然出現(xiàn)斷崖式下降,說明隨著該劇的更新,大家有所失望了。
          2)二十四小時內(nèi)的評論數(shù)的變化趨勢
          最近總聽到周圍有人在討論這部劇,下面就來看看大家都是在啥時候追劇呢?從24小時圖中可以看出:晚上7-24點(diǎn),評論急劇上升,大多數(shù)人都是6點(diǎn)下班,可能吃個飯到7點(diǎn)左右,或者直接在下班過程中,就開始了一天的追劇。這里還有一波早高峰5-8點(diǎn),難道睡不著?早上還要起來刷刷據(jù),然后上班。這里還有兩個時間段:上午10-11點(diǎn),中午12-15點(diǎn),肯定有相當(dāng)一部分小伙伴,正在摸魚工作呀?
          3)星級評分的餅圖
          劇究竟好不好,看看觀眾的評分少不了,這也是觀眾最直觀的想法。
          ?? 1星:很差
          ?? 2星:較差
          ?? 3星:還行
          ?? 4星:推薦
          ? ?5星:力薦
          從下圖中可以看出:大家對于該劇的評價(jià)還是很低的,1星和2星基本占據(jù)了整個餅圖,也就是說該劇并沒有得到大家的認(rèn)可。
          4)大家主要都在評論一些啥
          其實(shí)大家對于該劇最大的爭論點(diǎn),還是由張魯一飾演的嬴政。40歲的張魯一,竟然飾演13歲的少年嬴政,然后向36歲朱珠飾演的趙姬分享喜訊,這個角色顯色很不協(xié)調(diào)。很多人調(diào)侃:難道請不起小演員嗎?
          還有一部分人,對該劇的劇情和臺詞一頓吐槽,嬴政稱如果呂不韋是自己的生父,愿意跟他一起離開秦國浪跡天涯,這真的是少年老成的嬴政能說出來的話嗎?
          《大秦賦》是“大秦帝國”系列的第四部,原名為《大秦帝國之天下》,播出時改為了《大秦賦》。于是很多人將這部劇和2009年播出的《大秦帝國》作比較,以此來諷刺該劇。
          好了,今天的分享就到此為止。如果你有更多的時間,更多的分析思路,可以下去拓展哦!


          更多閱讀



          5 分鐘完全掌握 Python 協(xié)程


          程序運(yùn)行慢?你怕是寫的假 Python


          賽博朋克科幻文化的起源和意義


          特別推薦


          程序員摸魚指南


          為你精選的硅谷極客資訊,
          來自FLAG巨頭開發(fā)者、技術(shù)、創(chuàng)投一手消息




          點(diǎn)擊下方閱讀原文加入社區(qū)會員

          瀏覽 24
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本精品三级 | 俺也去官网,国产97碰公开 | 欧美视频在线观看 | 五月天激情丁香 | 麻豆精品一区 |