摘要:填寫自己對應(yīng)的網(wǎng)頁更改相應(yīng)數(shù)據(jù)的編碼格式遇到請求掛起當(dāng)前任務(wù),等操作完成執(zhí)行之后的代碼,當(dāng)協(xié)程掛起時,事件循環(huán)可以去執(zhí)行其他任務(wù)。
2012,一個卡牌,一個雷恩加爾,一群紅衣少年的歡聲笑語。
2013,一個杰斯,一個扎克,一場支離破碎的夢境。
2014,一個螳螂,一個蘭博,一座搖搖欲墜的基地。
2015,一個寡婦,一個妖姬,一本永遠(yuǎn)疊不上去的梅賈竊魂卷。
2016,一個盲僧,一個奧拉夫,一串恥辱的數(shù)字。
2017,一個克格莫,一個青鋼影,一個賽區(qū)絕境中最后的救贖。
2018,一個刀妹,一個劍魔,一個至高無上的尊嚴(yán)。
2019,一個泰坦,一個盲僧,一個浴火重生的鳳凰。
2020,一個船長,一個劍姬,一個殺戮無法彌補(bǔ)的遺憾。
2021,一個皇子,一個佐伊,一個挽大廈于將傾的騎士。
今天的主角就是2021年英雄聯(lián)盟全球總決賽冠軍——EDG,當(dāng)天奪冠消息一出,立馬登頂各大媒體平臺熱搜榜,引發(fā)巨大反響,本文以B站官方賽事評論為例,來看看能不能發(fā)現(xiàn)什么有趣的內(nèi)容!
待爬取鏈接:https://www.bilibili.com/video/BV1EP4y1j7kV?p=7
F12打開抓包工具–>選擇network–>向下滑動評論–>尋找對應(yīng)數(shù)據(jù)包
數(shù)據(jù)包鏈接如下:
https://api.bilibili.com/x/v2/reply/main?callback=jQuery172020429646890840103_1636422926026&jsonp=jsonp&next=2&type=1&oid=891511588&mode=3&plat=1&_=1636423918172
直接打開會發(fā)現(xiàn)并不是對應(yīng)的 json
文件。
仔細(xì)觀察鏈接會發(fā)現(xiàn)有 “callback=jQuery172020429646890840103_1636422926026”
這個參數(shù),根據(jù)字面意思應(yīng)該是回調(diào)參數(shù),我們嘗試將它刪掉,重現(xiàn)打開。
現(xiàn)在數(shù)據(jù)包就可以得到了,下一步找到控制“頁數(shù)”的參數(shù)即可,經(jīng)測試發(fā)現(xiàn)就是 next=2
這個參數(shù)。
獲取url列表
通過 url
模板,格式化 url
,保存到待抓取列表中。
def get_url_list(): url_list = [] # url模板 url = f"https://api.bilibili.com/x/v2/reply/main?jsonp=jsonp&next=%d&type=1&oid=891511588&mode=3&plat=1&_=1636423918172" for i in range(1, 10): # 將格式化的url添加到字符串中 url_list.append(url%i) return url_list
抓取程序
因?yàn)榇ト〉臄?shù)據(jù)還是有些多,整個抓取采用 異步協(xié)程 的方式,使用時要替換請求頭 headers
中的 cookie
,本次的代碼只對網(wǎng)頁請求進(jìn)行異步操作,文件讀寫這部分并未設(shè)計(jì)異步。
async def get_page(url): headers = { "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": "填寫自己對應(yīng)的網(wǎng)頁cookie" } async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(ssl=False), trust_env=True) as session: while True: async with session.get(url=url, headers=headers, timeout=8) as response: # 更改相應(yīng)數(shù)據(jù)的編碼格式 response.encoding = "utf-8" # 遇到IO請求掛起當(dāng)前任務(wù),等IO操作完成執(zhí)行之后的代碼,當(dāng)協(xié)程掛起時,事件循環(huán)可以去執(zhí)行其他任務(wù)。 page_text = await response.text() print(f"{url.split("=")[-1]}爬取完成!") break return save_to_csv(page_text)
數(shù)據(jù)解析與存儲
從上面圖中的內(nèi)容可以看到,數(shù)據(jù)結(jié)構(gòu)還是有點(diǎn)復(fù)雜的,這里我根據(jù)個人興趣提取了一部分感興趣的字段,大部分評論具有回復(fù)內(nèi)容,這里只采集第一級評論的回復(fù),數(shù)據(jù)保存時要注意 DataFrame
的表頭不要重復(fù)保存。
def save_comment(df, dic, rep=False): message = dic["content"]["message"] if not rep else dic["content"]["message"].split(":", 1)[-1] df = df.append({"ctime":dic["ctime"], "like":dic["like"], "uname":dic["member"]["uname"], "sex":dic["member"]["sex"], "current_level":dic["member"]["level_info"]["current_level"], "message":message}, ignore_index=True)def save_to_csv(page_text): df = pd.DataFrame({"ctime": [], "like": [], "uname": [], "sex": [], "current_level": [], "message": []}) data = json.loads(page_text) comment = data["data"]["replies"] for dic in comment: save_comment(df, dic) if dic["replies"] != None: for reply in dic["replies"]: save_comment(df, reply, rep=True) header = False if Path(r"C:/Users/pc/Desktop/bilibili.csv").is_file() else True df.to_csv(r"C:/Users/pc/Desktop/bilibili.csv", header=header, index=False, mode="a") print("成功保存:" + str(len(df)) + "條")
完整源碼文末獲取
寫文時間確實(shí)不多,只有用 Tableau
簡單可視化一下了!
熱評發(fā)布時間分布
可以看到熱評發(fā)布時間集中在 11月6日下午5-6點(diǎn),基本占了整個熱評池的一半左右。
評論熱度排行
下面看一下熱度排名前三的評論:
jiejie:像scout說實(shí)話,我真的很想給他一個冠軍你知道嗎?
他在edg打了那么久,我很想去給他一個冠軍,我其實(shí)我是幻想過,我們一起在冰島打到最后,我們一起捧獎杯的那個畫面,我們六個,芙蘭朵,viper,妹扣,俊嘉,如果廠長小象能來的話,我們八個人一起捧起召喚師獎杯。
lpl是最牛逼的,沒有之一!
————點(diǎn)贊數(shù)104089
也許有一天,我說也許,也許有一天,我們再次對英雄聯(lián)盟電子競技失去了信心。因?yàn)轫n國的宰治,從四強(qiáng)賽看來,已卷土重來。
但我覺得不是今天。
也許有一天,這些我們所熟知的熱愛的選手,沒有辦法堅(jiān)持在舞臺上了。
但也不是今天。
今天,EDG浴血奮戰(zhàn)!不破不立!來迎戰(zhàn)LCK一號種子DK戰(zhàn)隊(duì),我們準(zhǔn)備進(jìn)入召喚師峽谷!77777?。?![打call][打call][打call]
————點(diǎn)贊數(shù)67413
騎士拔劍,攘除外敵,重建王朝。
我懂了是亞瑟王傳說!
————點(diǎn)贊數(shù)37223
評論人群等級
大佬是真的多呀,2級的只有2%左右!5級6級大佬占了73%,4級的我瑟瑟發(fā)抖。。
評論人群性別比例
評論中男女占比 5:1 ,男生還是主力軍!
合成看板
源碼獲取
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/123085.html
摘要:旋轉(zhuǎn)圖片并得到新的數(shù)據(jù)不合理的地方歡迎小伙伴雅正旋轉(zhuǎn)圖片度,并產(chǎn)生新的數(shù)據(jù)項(xiàng)目開發(fā)中,甲方希望上傳圖片的時候可以調(diào)整圖片的方向,這也是一個合理要求,不合理又怎么樣呢。 javaScript旋轉(zhuǎn)Base64圖片并得到新的base64數(shù)據(jù) 不合理的地方歡迎小伙伴雅正 js旋轉(zhuǎn)base64圖片90*N度,并產(chǎn)生新的base64數(shù)據(jù) 項(xiàng)目開發(fā)中,甲方希望上傳圖片的時候可以調(diào)整圖片的方向,這也是...
摘要:我發(fā)現(xiàn)抖音上很多小姐姐就拍個跳舞的視頻就火了,大家是沖著舞蹈水平去的嗎,都是沖著顏值身材去的,能刷到這篇文章的都是了,我就跟大家不一樣了,一個個刷太麻煩了,我直接爬下來看個夠,先隨意展示兩個。 我發(fā)現(xiàn)抖音上很多小姐姐就拍個跳舞的視頻就火了,大家是沖著舞蹈水平去的嗎,都是沖著顏值身材去的,能刷...
摘要:準(zhǔn)備工作查看肯德基官網(wǎng)的請求方法請求。判斷得肯德基官網(wǎng)是請求通過這兩個準(zhǔn)備步驟,明確本次爬蟲目標(biāo)的請求肯德基官網(wǎng)獲取上海肯德基地點(diǎn)前頁。構(gòu)造不難發(fā)現(xiàn),肯德基官網(wǎng)的的一個共同點(diǎn),我們把它保存為。 ...
?一文告訴你蓬萊閣到底如何? 一、前言二、環(huán)境準(zhǔn)備三、具體實(shí)現(xiàn)1、短評游客評論并保存2、詞云制作3、成果 四、最后 一、前言 ??畢竟會在煙臺待上三年,先了解了解煙臺這個地方。 二、環(huán)境準(zhǔn)備 編輯器:pycharm 用到的庫:requests、wordcloud、jieba 三、具體實(shí)現(xiàn) 1、短評游客評論并保存 ??爬取去哪兒網(wǎng)關(guān)于蓬萊島的游客評論的前20頁 def save_com...
摘要:爬蟲數(shù)據(jù)寫入文件中文亂碼,用在中打開文件沒有問題,但是用打開卻出現(xiàn)了問題,以下為解決方法。 python爬蟲數(shù)據(jù)寫入csv文件中文亂碼,用’utf-8‘在pycharm中打開文件沒有問題,但是用excel打開卻出現(xiàn)了問題,以下為解決方法。 (最近在練習(xí)爬蟲,這個博文是對自己學(xué)習(xí)的記錄和分享,...
閱讀 4758·2021-11-15 11:39
閱讀 2700·2021-11-11 16:55
閱讀 2208·2021-10-25 09:44
閱讀 3512·2021-09-22 16:02
閱讀 2444·2019-08-30 15:55
閱讀 3132·2019-08-30 13:46
閱讀 2674·2019-08-30 13:15
閱讀 1959·2019-08-30 11:12