1. 程式人生 > >‘大案牘術’告訴你為什麼《長安十二時辰》這麼火!

‘大案牘術’告訴你為什麼《長安十二時辰》這麼火!

這個夏天,《長安十二時辰》火了。 易烊千璽、雷佳音主演;馬伯庸同名小說改編。 耗巨資花費七個月時間打造七十多畝長安城。 這部劇史料嚴謹,造型考究,堪稱良心製作。 目前豆瓣評分也達到8.6的高分。

在這裡插入圖片描述 吐槽下優酷的廣告太長了,不過告訴大家一個小道訊息,支付寶鉑金會員可以使用會員積分兌換一個月優酷會員哦!

一、需求背景

故事主要是講述了唐天寶三載,上元節當日的帝都長安。在一派歌舞昇平的繁華盛景中,一群偷偷潛入的突厥狼衛醞釀著滅城的陰謀。只有一個死囚犯能挽救長安,時限為十二個時辰,進而引發驚心動魄的故事。 在這裡插入圖片描述 在第一集中便出現了一個讓豬哥好奇的專業術語“大案牘術在這裡插入圖片描述 於是帶著疑問我就去問百度,還別說真有。 在這裡插入圖片描述

可是,百度百科=白說,然後在彈幕君的指點下才知道這大案牘術就相當於我們今天的大資料分析,最後不忘修改下百度百科。 在這裡插入圖片描述 然後我便不再對這大案牘術感到好奇,而是對彈幕大軍產生興趣,好奇大家為什麼都喜歡看這部劇,大家的共同點在哪裡?這部劇有哪些吸引大家的地方?

二、功能描述

因最近剛好我們在講爬蟲與資料分析,所以就想用我們現代的大案牘術來分析一下這不電視劇到底為什麼會火,大家都對這部電視劇的評價是什麼樣的?(所有彈幕最高頻的900個詞) 在這裡插入圖片描述

三、技術方案

  1. 分析某酷彈幕載入方式然後用requests庫爬取
  2. 需大量抓取資料,近可能多
  3. 重點做資料清洗,比如:劇情、人名、高能君彈幕等等
  4. 將彈幕做成雲詞

四、技術實現

豬哥將會詳細的講解每一步的過程,希望感興趣的同學可以認真閱讀,然後自己動手實踐,這樣才能真的學習到知識。

本教程只為學習交流,不得用於商用獲利,後果自負! 如有侵權或者對任何公司或個人造成不利影響,請告知刪除

1.分析並獲取彈幕介面的URL

第一步:開啟某酷網站,然後點選電視劇播放,在頁面中滑鼠右鍵選擇檢查(或F12)調出瀏覽器的除錯視窗。 在這裡插入圖片描述 第二步:複製任意一條彈幕,然後點選除錯視窗按Control+F進行搜尋! 在這裡插入圖片描述 第三步:點選該請求的Headers按鈕,檢視請求url,並且注意請求頭中的RefererUser-Agent引數。 在這裡插入圖片描述 只需通過以上三步彈幕載入的url便被我們找到:

https://service.danmu.youku.com/list?jsoncallback=jQuery111205151507831610791_1562918614483&mat=0&mcount=1&ct=1001&iid=1061156738&aid=322943&cid=97&lid=0&ouid=0&_=1562918614486

2.爬取彈幕資料

URL找到之後我們便可以開始coding了,還是老規矩:先從一條資料的抓取、提取、儲存,這些都沒問題之後我們再研究批量抓取。

這裡我們依然是用我們的requests庫來操作,不知道requests庫是什麼東西的老鐵們先看看這篇文章:requests庫介紹在這裡插入圖片描述 有了上次的教訓,我們這次直接把請求頭加上,一次就把彈幕資料爬取到手。

3.資料提取

第一步:提取json資料 我們觀察返回的資料會發現,和上一篇一樣,跨域請求都是用的是jsonp,所以我們需要對返回的資料進行稍微的擷取,就是將外面的jQuery111203412576115734338_1562833192066(和最後的)去掉,只保留中間的json資料。 在這裡插入圖片描述 這裡我們和上篇做了一個小小的改動:豬哥使用r.text.index('(')獲取到了回撥函式的左括號的角標,然後再用這個角標去做切片,這樣的好處是可以通用,即使jsonp返回函式名長度改變也不影響。

第二步:提取彈幕資料 得到json之後,我們就來分析彈幕資料在哪裡,我們可以在瀏覽器的除錯視窗的Preview裡面檢視 在這裡插入圖片描述 可以看到result欄位裡面便是彈幕資料,而且他的資料格式是一個列表,列表中是每個彈幕物件,彈幕物件中的content欄位就是實際的彈幕內容,好那我們用json把他們提取並打印出來。 在這裡插入圖片描述

4.資料儲存

想要的資料提取出來之後,我們就可以把資料儲存。資料儲存我們還是使用檔案來儲存,原因是操作方便,滿足需求。 在這裡插入圖片描述

5.批量爬取

完成一次請求請求的爬取、提取、儲存之後,我們來研究下如何批量儲存資料。這裡和其他批量爬取有所區別:如何爬取多集的批量資料?

在遇到問題和困難時,豬哥總是喜歡把事情或者工作量化,然後再細化,分步解決!

這裡我們就把批量爬取分為兩步:第一步批量爬取一集的所有彈幕;第二步爬取多集的彈幕!

第一步:爬取某一集所有彈幕 批量爬取的關鍵就在於找到分頁引數,找分頁的技巧就是:比較兩個請求url的引數,看看有何不同。 在這裡插入圖片描述 我們比較同一集第一次請求與第二次請求的url發現mat引數不同,而且還是依次遞增的趨勢,這個引數便是我們尋找的分頁引數(其實mat引數表示分鐘數,表示獲取第幾分鐘的彈幕),找到分頁引數後我們就可以對原方法改造,改造思路:

將原url中分頁引數變為可變引數,由方法傳入。然後新建一個批量爬取的方法,迴圈呼叫單次爬取方法,每次呼叫傳入頁數即可!

在這裡插入圖片描述 第二步:爬取多集的所有彈幕 這一步的關鍵在於找到代表集數的引數,我們可以同樣可以使用對比的方法:比較第一集與第二集的第一個彈幕請求URL,從而找到不同引數! 在這裡插入圖片描述 我們發現第一集的iid=1061156738、第二集的iid=1061112026,但是這個iid引數並不是遞增,如何找到規律?

這時候我們還是要回到網頁中尋找答案,我們複製第一集的iid值1061156738到瀏覽器的除錯視窗搜尋,找到iid就是某介面的vid值。 在這裡插入圖片描述 找到集數引數之後,我們就可以寫一個函式將所有集數引數爬取到。 在這裡插入圖片描述 令牌為空?很奇怪,URL和headers我們都填了為什麼還是不行?而瀏覽器卻可以?

這裡需要引入另一個請求頭:Cookie,Cookie是幹什麼的?

因為HTTP協議是無狀態協議,也就是說下次再請求伺服器並不知道你是誰,所以就用Cookie和Seesion來記錄狀態,最簡單的例子就是使用者登入後,伺服器就給瀏覽器遺傳一串加密字串(key),然後伺服器自己快取一個key-value,這樣瀏覽器每次來請求都帶上這個key,伺服器就知道你是哪個使用者!

由於篇幅有限今天只給大家簡單介紹,考慮其重要性,後面豬哥會專門寫一篇文章介紹Cookie。

那我們去哪裡找Cookie呢?答案當然是瀏覽器咯! 在這裡插入圖片描述 那這麼多Cookie到底哪個才是我們要找的那個?這個誰也不知道,也不用找,我們直接把所有Cookie複製到程式碼裡面就可以。

但是這種表格形式的根本無法複製,有沒有什麼小技巧能方便我們複製Cookie嗎?當然有,我們點選瀏覽器除錯視窗的Console按鈕,然後輸入document.cookie就可以看到全部Cookie啦,直接複製出來就可以,是不是很方便! 在這裡插入圖片描述 我們把Cookie複製到程式碼裡試試吧,注意Cookie有過期時間,尤其是這個token大概十幾分鍾可能就會過期,過期之後在瀏覽器中重新複製即可! 在這裡插入圖片描述 我們可以觀察到返回的資料同樣是個jsonp函式,同樣需要提取內部的json資料,所以我們可以封裝一個公用方法,用於提取jsonp返回的資料轉為json物件,這樣提高了複用性! 在這裡插入圖片描述 得到json資料之後沒我們通過觀察可以得到知其資料結構,然後將vid提取出來並返回,上圖豬哥返回了一個生成器!

代表集數的id拿到了,現在我們就可以雙層迴圈去爬所有的彈幕啦,上程式碼。 在這裡插入圖片描述 一共爬取了近30萬條的資料,大概用了40分鐘,當然如果你覺得時間間隔太長也可縮短,但是建議不要太頻繁,不然對人家伺服器或者被監控到就不好! 在這裡插入圖片描述

6.資料清洗+生成詞雲

我們要清洗什麼資料?其實這個事先很難猜到,所以我們不做資料清洗直接生成雲詞看看會是什麼效果,然後再做調整。關於雲詞的生成介紹豬哥在上篇爬取京東商品評價並生成詞雲已經為大家講過!

在這裡插入圖片描述 我們可以看到右側生成的詞雲,像:哈哈、不是、這個、什麼等這些詞比較多,這種單詞沒有太大的分析價值,所以我們資料清洗便有了方向。(ps:某酷的彈幕沒啥內涵。。。) 在這裡插入圖片描述 豬哥添加了一份清洗詞列表,這樣就可以將這些詞遮蔽掉,然後我們再來看看效果吧! 在這裡插入圖片描述

7.分析詞雲圖

從上面的詞雲圖中我們可以分析出:

  1. 此電視劇中的一些主角:張小敬、李必、崔器、龍波、徐斌、竟然還有人喜歡曹破延。
  2. 有人說好看,有人說看不懂,說明劇情可能有點深度
  3. 畫風可能有點像刺客信條
  4. 四字弟弟、千璽,說明劇中有易烊千璽
  5. 片尾曲可能有驚喜
  6. 大唐、長安說明了故事背景
  7. 彈幕、智商,可能大家在提醒你:關彈幕,保智商!

目前此劇已更新完第一季(20集),真的是一部國產良心劇,畫質、服裝、禮節、拍攝、劇本、演技都堪稱一流,推薦大家看看!

五、總結

我們來從技術層面分析總結一下今天這篇文章,本篇文章看似與上一篇爬取京東商品評價並生成詞雲流程很類似,但是更難一點:

  1. 此次爬取的彈幕不僅要找分頁引數,而且要找分集的引數
  2. 這次爬取彈幕需要用到Cookie,而且有過期時間
  3. 此次資料量大,對電腦效能可能會有點考驗
  4. 在生成詞雲時有資料清洗

週末、瓜子花生和啤酒 、看劇程式設計兩不誤,人生豈不美滋滋!

專案地址:https://github.com/pig6/youku_danmu_spider 在這裡   
 
 </div> 
 <div class=

相關推薦

大案告訴為什麼《長安十二時這麼

這個夏天,《長安十二時辰》火了。 易烊千璽、雷佳音主演;馬伯庸同名小說改編。 耗巨資花費七個月時間打造七十多畝長安城。 這部劇史料

看《長安十二時》可以瞭解哪些演算法知識

最近,小吳在追一部古裝劇 ----《長安十二時辰》。 故事講得是在上元節前夕,長安城混入可疑人員,身陷囹圄的張小敬臨危受命,與少年天才李必攜手在十二時辰內破除隱患。 該劇的一大亮點就在於 時間很緊迫,需要在二十四小時內捉拿蓄謀已久的“恐怖分子”。 而之

唐朝的大資料平臺 - 大案

週末不務正業一回,寫點輕鬆點的內容,最近在陪老婆追一部挺火的劇《長安十二時辰》,劇情還是挺有意思的,但是有個叫"大案牘術"的東西看得我有點出戲,職業病犯了聯想了一堆亂七八糟的東西… 劇中有一個統管了大唐三省六部所有檔案資料的機構叫靖安司,這儼然就是一個大資料中心,裡面有一個把我驚呆了的

從近期火熱的《長安十二時》裡面能看出哪些職場潛規則?

       據小說作者馬伯庸所言,書中很多細節都是有據可考,其中參考了大量歷史書籍,並非憑空捏造,所以在觀感教育方面,也就有了一定的分量和意義,現在就來說說能從其中看出哪些別人不會輕易告訴你的職場潛規則?   一、懂得取捨     &nb

IT界的新方向-大數據?讓我來告訴如何從“零”學起

大數據學習+Java大數據行業目前炒的很是火爆,但是大數據的發展依然並不是很成熟,尤其是對於一些小白。了解系統的學習大數據的方法將更有利於自己更加快速有效的去學習大數據。分享一下零基礎如何學習大數據。 第一、對於初學者尤其是編程小白,Linux、Java的學習是必須的。但這並不代表我們非要研究透這些,我們只要

未明學院資料分析報告:金融專業如何找實習?資料分析告訴整個金融實習市場全貌

本文作者 未明學院資料分析方向老師 資料究竟可以如何幫助到我們的生活?大資料對企業商業決策才有價值,而距離我們個人就很遙遠嗎? 其實,如果你留意我們公眾號往期推送的資料分析報告(見文末),可以發現,無論是學習、工作還是生活,無論是娛樂八卦新聞、體育賽事預測還是商業分析決策

通過資料分析告訴北京Python開發的現狀

相信各位同學多多少少在拉鉤上投過簡歷,今天突然想了解一下北京Python開發的薪資水平、招聘要求、福利待遇以及公司地理位置。既然要分析那必然是現有資料樣本。本文通過爬蟲和資料分析為大家展示一下北京Python開發的現狀,希望能夠在職業規劃方面幫助到大家!!! 爬蟲 爬蟲的第一步自然是從分析請

一張圖告訴學JAVA還是學Python

Java和Python一直都是兩種很火很強大的程式語言,對於剛開始起步學習程式設計的同學來說,會迷惑且最經常問的問題是,我該學Java還是Python,是不是Python容易學,或是應該先學什麼程式語言等等這樣的問題。作為一名Java程式設計師,肯定會建議你先學

程式設計師搞笑動圖:告訴真正的人工智慧是什麼

PHP語言是最好的語言難道她發現BUG了、需要客戶端嗎?買一個包子,沒毛病啊知道洛杉磯凌晨四點是什麼樣子嗎?我想換一行怎麼辦?這程式碼是哪個SB寫的、少了個分號程式設計師理想沒有一公斤,少了24克論BUG特徵...重新定義下班之前如果有對前端感興趣前端程式設計師,可來我們的web前端技術學習群的哦618522

Python爬蟲新手教程:爬取了6574篇文章,告訴產品經理在看什麼

作為網際網路界的兩個對立的物種,產品汪與程式猿似乎就像一對天生的死對頭;但是在產品開發鏈條上緊密合作的雙方,只有通力合作,才能更好

分析了京東內衣銷售記錄,告訴妹子們的真Size

>今天閒暇之餘寫了一個爬蟲例子。通過爬蟲去爬取京東的使用者評價,通過分析爬取的資料能得到很多結果,比如,哪一種顏色的胸罩最受女性歡迎,以及中國女性的平均size(僅供參考哦~) 開啟開發者工具-network,在使用者評價頁面我們發現瀏覽器有這樣一個請求 ![圖片描述](//img.mukewang.c

半年招聘篩選了400+份簡歷,告訴怎麼寫容易被撩

![](https://img-blog.csdnimg.cn/20210225093943898.png) 作者:小傅哥 部落格:[https://bugstack.cn](https://bugstack.cn) > 沉澱、分享、成長,讓自己和他人都能有所收穫!

金服告訴:想做JAVA技術開發需學習哪些?

圖片 數據庫技術 TE 互聯網架構 不可 異常處理 需要 img 使用 微辰金服告訴你:JAVA技術開發從這7點學起:  1.夯實java基礎:當前java新技術層出不窮,各企業有不同的側重,根據企業用人需求,只有具備堅實的java基礎功底的程序員才能快速掌握新技術。核心算

Fedora 26Alpha LXDE簡單對比LXQT的資源使用,到底到底哪個更省硬件資源,告訴答案

lxde.lxqt.對比.輕量級.桌面環境帶有截圖的文章地址:http://baijiahao.baidu.com/builder/preview/s?id=1566709180424027 本文只摘取其中的結果分析下:不打開任何程序的時候,LXDE大概剩余內存1595Mib;LXQT大概剩余1542Mib打

一張圖告訴angular2所有知識點

技術分享 代碼 自動化 我想 合作 .cn 動畫 image 框架 忙活了半年,從angular2.0到現在angular4.2。從沒AOT到有AOT。我想說,angular2的學習曲線真的有點陡峭。只能說,angular2是一個比較完整的框架,框架就是這樣,一大堆條條框框

跳槽3次才算弄明白的4個秘密,所有公司都不會告訴(收集互聯網)

跳槽3次才算弄明白的4個秘密 所有公司都不會告訴你(收集互聯網) 網上看到的,有點意思,個人雖然不完全認同,但也是當今社會真實寫照。。職場中不光光是要靠能力做事,兢兢業業努力工作卻只獲得一份溫飽的工資。越是老實人,幹的越多,拿得越少,升的越慢,這並不是個例了 。人民的名義中漢東的易學習難被提拔,職場中

PHP項目做完後想上線怎麽辦,告訴免費上線方法

上傳 edi 理解 多項目 更改 目前 告訴 找工作 src PHP項目做完後想上線怎麽辦,告訴你免費上線方法! PHP程序員找工作的底氣是什麽?是項目! PHP程序員沖擊高薪的信心源自哪裏?是項目! PHP程序員掌握理解PHP知識

大神告訴手機上pdf文件怎麽打開

今天我們的生活在日漸變化,每一天感覺都是不同的。在快速發展的今天,越來越多的人以手機為中心。不管什麽都想要在手機上完成,有時候手機也不是萬能的,有些格式的文件經常會打不開,那麽有沒有辦法解決呢?當然有的,下面讓我來為大家分享一下! 輕快PDF閱讀器是一款非常便捷的PDF閱讀軟件,它具有個性化的閱讀模式,

Entity Framework學習筆記——EF簡介(一篇文章告訴什麽是EF)

比較 編程 ast 定義 .aspx b2c 文件創建 發送 ase Entity Framework是以ADO.NET為基礎,面向數據的“實體框架”。以下簡稱EF。 它利用了抽象化數據結構的方式,將每個數據庫對象都轉換成應用程序對象 (entity),

JavaScript實現簡單圖片滾動 --9張圖告訴,C羅欲哭無淚

charset () element edit fas 簡單圖 pad jpg sni 源代碼下載:http://download.csdn.net/detail/u011043843/7510425 昨晚德國和葡萄牙的焦點之戰你看了嗎?北京時間淩晨的比賽