趙本山:我的時代還沒有結束 | Python告訴你
作者 | 丁彥軍
來源 | 戀習Python(ID: sldata2017)
【AI科技大本營按】今年春晚的小品好看嗎?沒有了趙本山的春晚總覺得少了點什麼,然而許久不登春晚舞臺的本山大叔藉著B站的東風證明了「你大爺還是你大爺」。
最近很多人被“改革春風吹滿地, 中國人民真爭氣”魔性的旋律所洗腦,實際上這段魔性的旋律來自於鬼畜神曲《唸詩之王》,而這段神曲就是根據本山大叔的作品所剪輯的。目前《唸詩之王》在B站播放量已經接近3000萬!今天我們就來用Python分析下《唸詩之王》火起來的原因。
1990年本山老師首次登上中央電視臺春節聯歡晚會舞臺,在春晚舞臺給我們留下很多深入人心的作品如《相親》,《我想有個家》,《昨天今天明天》,到2011年最後一次在春晚舞臺表演小品,,22個年頭陪我們度過了21個大年夜,每次都期待大叔的壓軸出場伴隨著零點的鐘聲一起跨年。
20年裡本山老師的影響力是毋庸置疑的,但是小平不是單口相聲更不是獨角戲,他的成功也是離不開搭檔的配合,大家最熟悉的搭檔應該是範偉何高秀敏。三個人作為黃金搭檔也是演繹了許多經典作品比如《賣柺》,《買車》,《功夫》等。
除了範偉和高秀敏,最令人印象深刻的搭檔就是宋丹丹了,雖然合作的不是特別多但是二人合作的《昨天今天明天》和《小崔說事》太深入人心,白雲黑土成了大家最喜愛的大叔大媽但宋丹丹多次說過上春晚太累,短期應該不會在合作了吧。
最近你有沒有被“改革春風吹滿地, 中國人民真爭氣”魔性的旋律所洗腦?這段視訊一經發布,就迅速攻佔“快手”“抖音”等各大短視訊平臺,近日臨近春節,彷彿又開始爆發,儼然已經從2018年末火到了2019年初。
恐怕連趙本山本人也不敢相信,自己這麼多年演的小品,被人剪輯改變成鬼畜神曲《唸詩之王》後,這些經典臺詞煥發了第二春。《唸詩之王》在B站播放量高達2400萬,本山大叔,即便已經七八年沒上春晚了,依然是毋庸置疑的高人氣IP!
接下來,戀習Python通過Python大法通過獲取B站:【春晚鬼畜】趙本山:我就是念詩之王!(https://www.bilibili.com/video/av19390801/)4萬條資料評論,與大家一起看看其背後火起來的原因。
還是老規矩,老套路(是不是有股熟悉的味道),戀習Python常用的三部曲:資料獲取、資料清洗預覽、資料分析視覺化。
一、資料獲取
在獲取視訊評論之前,我們首要做的就是分析其網頁結構,尋找目標資料(也就是我們要的評論資料在哪裡,這點很重要)
最終發現,目標資料的url連結為:
https://api.bilibili.com/x/v2/reply?&type=1&oid=19390801&pn=1
由上圖可看出,其評論資料是以json資料形式存在於網頁端的,可看出一共有1946頁評論,每頁評論20條,總評論63579條(樓層下面存在評論)。今天戀習Python與大家一起主要是爬取樓層評論,共1940*20=38920條。
接下來,就爬取思路很明確,從一個JSON檔案開始,爬完20條評論,更改路徑後獲取第二個JSON檔案,以此類推,直到爬完所有的評論資料。
我們主要爬取的資料資訊有8個維度,如下:
詳細程式碼:
import requests
from fake_useragent import UserAgent
import json
import time
import pandas as pd
#下載網頁評論資料
def get_page_json(url):
try:
ua = UserAgent(verify_ssl=False)
headers = {"User-Agent": ua.random}
json_comment = requests.get(url,headers=headers).text
return json_comment
except:
return None
#解析網頁評論資料
def parse_page_json(json_comment):
try:
comments = json.loads(json_comment)
except:
return "error"
comments_list = []
#獲取當頁資料有多少條評論(一般情況下為20條)
num = len(comments['data']['replies'])
for i in range(num):
comment = comments['data']['replies'][i]
comment_list = []
floor = comment['floor']
ctime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(comment['ctime']))#時間轉換
likes = comment['like']
author = comment['member']['uname']
sex = comment['member']['sex']
level = comment['member']['level_info']['current_level']
content = comment['content']['message'].replace('\n','')#將評論內容中的換行符去掉
#print(content)
rcount = comment['rcount']
comment_list.append(floor)
comment_list.append(ctime)
comment_list.append(likes)
comment_list.append(author)
comment_list.append(sex)
comment_list.append(level)
comment_list.append(content)
comment_list.append(rcount)
comments_list.append(comment_list)
save_to_csv(comments_list)
def save_to_csv(comments_list):
data = pd.DataFrame(comments_list)
#注意儲存檔案的編碼為utf_8_sig,不然會亂碼,後期會單獨深入講講為何為這樣(如果為utf-8)
data.to_csv('春晚鬼畜_1.csv', mode='a', index=False, sep=',', header=False,encoding='utf_8_sig')
def main():
base_url = "https://api.bilibili.com/x/v2/reply?&type=1&oid=19390801&pn=1"
#通過首頁獲取評論總頁數
pages = int(json.loads(get_page_json(base_url))['data']['page']['count'])//20
for page in range(pages):
url = "https://api.bilibili.com/x/v2/reply?&type=1&oid=19390801&pn="+str(page)
json_comment = get_page_json(url)
parse_page_json(json_comment)
print("正在儲存第%d頁" % int(page+1))
if page%20 == 0:
time.sleep(5)
main()
其中主要涉及到兩個知識點:
1、通過fake_useragent生成隨機UserAgent
不管是做開發還是做過網站的朋友們,應該對於User Agent一點都不陌生,User Agent 中文名為使用者代理,簡稱 UA,它是一個特殊字串頭,使得伺服器能夠識別客戶使用的作業系統及版本、CPU 型別、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器外掛等。
通過UA來判斷不同的裝置或者瀏覽器是開發者最常用的方式方法,這個也是對於Python反爬的一種策略,但是有盾就有矛啊---我的矛就是讓抓取行為和使用者訪問網站的真實行為儘量一致。
忽略ssl驗證:
ua = UserAgent(verify_ssl=False)
2、Chrome控制檯中Network的Preview的正確用法
Response:
Preview:
一般情況下我們看Network裡面的Preview和Response的結果似乎一模一樣。不管是請求頁面,請求頁面還是請求js還是請求css,二者的結果都一樣。直到今天從伺服器端向web前端傳送一段json格式的資料,才發現Preview的特殊功效。在Preview(預覽功能)中,控制檯會把傳送過來的json資料自動轉換成javascript的物件格式。而且可以層層展開,方便前端工程師遍歷呼叫(特別是在多維的情況下),也方便我們Python爬蟲工程師解析JSON資料。
二、資料清洗預覽
由於我們在解析資料時已經將資料處理過,因此下載存為的資料已經乾淨,沒有雜亂資訊。戀習Python從中整理出Top10評論:
從上述評論中也可看出,第三、第四評論內容都是與春晚有關,也可以看出網友對本山大叔迴歸春晚的期待。看著視訊,一句“改革春風吹滿地”,迴盪在腦海中幾天都揮之不去。心裡默唸著:本山大叔要是能上春晚,該多好啊!
三、後記
在經過全民的參與和發酵過後,各種版本一應而出,尤其是英文版,押韻之餘無人能敵!
我只想借這首鬼畜歌曲,回憶一下本山大叔曾經帶給我們的歡樂,尤其是那些郎朗上口的臺詞。文章的最後我想用一句話總結一下,那就是——“我十分想念趙本山!”
(本文為AI科技大本營轉載文章,轉載請聯絡作者。)
推薦閱讀:
Playboy封面女郎、網際網路第一夫人,程式設計師們的“鋼鐵審美”
從I到R:人工智慧語言簡史
如果我回騰訊上班
斷舍離:我徹底戒掉蘋果、微軟、Google、Facebook 和亞馬遜之後?
“離開 360 時,它只給了我一塊錢”
假期倒數計時, 這份完整區塊鏈開發資源列表, 趕緊收藏學起來!
這4門AI網課極具人氣,逆天好評!(附程式碼+答疑)
給AI開發者的新年禮物,技術公開課大放送(附演講PPT)
如何用最強模型BERT做NLP遷移學習?
“百練”成鋼:NumPy 100練
點選“閱讀原文”,開啟CSDN APP 閱讀更貼心!
相關文章
- 《模仿遊戲》沒有告訴你的圖靈真相遊戲圖靈
- 告訴我你的廚房有什麼智慧物件物件
- 有沒有人曾告訴你,你的SQL又報錯了?SQL
- 有答案了!一張圖告訴你到底學Python還是Java!你咋看?PythonJava
- 後Python時代, Julia告訴你速度和靈活性真的都可以有Python
- 沒有女孩的情人節,至少還有你的:我的Code
- 一張圖告訴你學JAVA還是學Python!JavaPython
- 警惕!PHP、Node、Ruby 和 Python 應用,漏洞還沒結束!PHPPython
- 癌症的大資料時代告訴我們什麼?大資料
- 請你告訴我合併兩個陣列,你有多少種方法陣列
- 我來告訴你程式碼重構有什麼好處
- 有人問我去阿里有沒有捷徑,我只能告訴你有,它只是一個網約車專案,反正我靠他定級了P7阿里
- 【譯】從沒有人告訴過我的 CSS 小知識CSS
- [譯] 從沒有人告訴過我的 CSS 小知識CSS
- 宏旺半導體告訴你除了BGA、SOP,還有那些主流的封裝型別?封裝型別
- 別告訴我你懂陣列(2)薦陣列
- 噓!這有幾條沒人會告訴你的資料科學求職祕密資料科學求職
- 人工智慧發展神速?37年前的塵封檔案告訴你並沒有人工智慧
- 斐訊用一頭牛告訴你 區塊鏈還有哪些新玩法!區塊鏈
- 第1天 | 12天搞定Python,告訴你有什麼用?Python
- Python告訴你iPhoneX有多熱賣(附程式碼)PythoniPhone
- 面試的反殺-你有沒有想要問我的面試
- [譯] 為什麼我還沒 Fix 你的 Issue
- CODE大全告訴你java是否開始沒落了Java
- 周朝陽:一件小事告訴你,網際網路免費江湖早已結束了
- 轉:Google網頁級別PR - 他們沒告訴你的Go網頁
- 老司機告訴你,我們究竟想要怎樣的遊戲?遊戲
- 告訴你,我是一個與眾不同的密碼密碼
- 通達OA批量處理沒有結束但前臺顯示已經結束的流程
- 測試專案結束之後,如何召開復盤會議?這篇文章告訴你
- 關於iPad Pro,蘋果沒告訴你的8件事iPad蘋果
- 沒人告訴你關於z-index的一些事Index
- Java,你告訴我 fail-fast 是什麼鬼?JavaAIAST
- 萬兆網路卡該如何選擇?我來告訴你!
- 程式猿,讓我來告訴你怎麼追女生!!!
- 關於自定義轉場動畫,我都告訴你。動畫
- 廣告OCPC資料還能告訴我們哪些被忽視的真相
- ASM lsdg 告訴我們的資訊ASM