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