自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python爬取4027條脈脈職言,解讀互聯(lián)網(wǎng)人的苦與難!

開發(fā) 后端 大數(shù)據(jù)
脈脈是一個(gè)實(shí)名職場(chǎng)社交平臺(tái)。之前爬了脈脈職言版塊,大概爬了4027條評(píng)論,本文對(duì)爬取過程給出詳細(xì)說明,對(duì)于評(píng)論內(nèi)容僅做可視化分析,之前存了一堆這方面的文章,今天一看全都404了”。

脈脈是一個(gè)實(shí)名職場(chǎng)社交平臺(tái)。之前爬了脈脈職言版塊,大概爬了4027條評(píng)論,本文對(duì)爬取過程給出詳細(xì)說明,對(duì)于評(píng)論內(nèi)容僅做可視化分析,之前存了一堆這方面的文章,今天一看全都404了”。

爬蟲

仍然使用python編程,對(duì)爬蟲沒興趣的可以直接跳過看下部分,不影響悅讀。

網(wǎng)址https://maimai.cn/gossip_list。

需要先登錄才能看到里面的內(nèi)容。爬取目標(biāo):

Python爬取4027條脈脈職言,解讀互聯(lián)網(wǎng)人的苦與難!

只爬文字部分,圖片不考慮。

在瀏覽器內(nèi)按F12打開開發(fā)者,向下滑,會(huì)看到很多gossip開頭的json文件(不行的話刷新一下)

Python爬取4027條脈脈職言,解讀互聯(lián)網(wǎng)人的苦與難!

右鍵open in new tab,里面是一條一條記錄,text后面是評(píng)論內(nèi)容。

Python爬取4027條脈脈職言,解讀互聯(lián)網(wǎng)人的苦與難!

我們感興趣的信息是下面這些

Python爬取4027條脈脈職言,解讀互聯(lián)網(wǎng)人的苦與難!

看一看每個(gè)網(wǎng)站的地址,都是page=數(shù)字結(jié)尾,所以爬的時(shí)候?qū)懸粋€(gè)循環(huán),數(shù)字從1開始往后取就可以了。

  1. https://maimai.cn/sdk/web/gossip_list?u=206793936&channel=www&version=4.0.0&_csrf=coAlLvgS-UogpI75vEgHk4O1OQivF2ofLce4&access_token=1.9ff1c9df8547b2b2c62bf58b28e84b97&uid=%22MRlTFjf812rF62rOeDhC6vAirs3A3wL6ApgZu%2Fo1crA%3D%22&token=%22rE8q1xp6fZlxvwygWJn1UFDjrmMXDrSE2tc6uDKNIDZtRErng0FRwvduckWMwYzn8CKuzcDfAvoCmBm7%2BjVysA%3D%3D%22&page=1&jsononly=1 

json的最開頭有total和remain兩個(gè)參數(shù),給出了目前所有可見評(píng)論剩余數(shù)和總數(shù),可以作為循環(huán)的停止條件。

Python爬取4027條脈脈職言,解讀互聯(lián)網(wǎng)人的苦與難!

但比較坑的一點(diǎn)是,脈脈并不能可見所有評(píng)論,而且評(píng)論是不斷刷新的,所有如果爬完一頁循環(huán)到下一頁或者嘗試過很多次之后,他會(huì)提示你:

Python爬取4027條脈脈職言,解讀互聯(lián)網(wǎng)人的苦與難!

直接看的時(shí)候有這樣的提示會(huì)體驗(yàn)很好,但對(duì)于爬蟲來說就不是很友好了,需要加個(gè)if判斷。

另外爬的太快,也會(huì)出錯(cuò),記得加time.sleep。

Python爬取4027條脈脈職言,解讀互聯(lián)網(wǎng)人的苦與難!

大概把能踩的坑都踩了,所以如果順利的話,每次只能爬幾百條信息,想爬更多的話,需要過一段時(shí)間等信息更新的差不多了再爬,代碼如下

  1. # -*- coding: utf-8 -*- 
  2. ""
  3. Created on Fri Oct 19 18:50:03 2018 
  4. ""
  5. import urllib 
  6. import requests 
  7. from fake_useragent import UserAgent 
  8. import json 
  9. import pandas as pd 
  10. import time 
  11. import datetime 
  12. #comment_api = 'https://maimai.cn/sdk/web/gossip_list?u=206793936&channel=www&version=4.0.0&_csrf=7ZRpwOSi-JHa7JrTECXLA8njznQZVbi7d4Uo&access_token=1.b7e3acc5ef86e51a78f3410f99aa642a&uid=%22MRlTFjf812rF62rOeDhC6vAirs3A3wL6ApgZu%2Fo1crA%3D%22&token=%22xoNo1TZ8k28e0JTNFqyxlxg%2BdL%2BY6jtoUjKZwE3ke2IZ919o%2FAUeOvcX2yA03CAx8CKuzcDfAvoCmBm7%2BjVysA%3D%3D%22&page={}&jsononly=1' 
  13. # 發(fā)送get請(qǐng)求 
  14. comment_api = 'https://maimai.cn/sdk/web/gossip_list?u=206793936&channel=www&version=4.0.0&_csrf=FfHZIyBb-H4LEs35NcyhyoAvRM7OkMRB0Jpo&access_token=1.0d4c87c687410a15810ee6304e1cd53b&uid=%22MRlTFjf812rF62rOeDhC6vAirs3A3wL6ApgZu%2Fo1crA%3D%22&token=%22G7rGLEqmm1wY0HP4q%2BxpPFCDj%2BHqGJFm0mSa%2BxpqPg47egJdXL%2FriMlMlHuQj%2BgM8CKuzcDfAvoCmBm7%2BjVysA%3D%3D%22&page={}&jsononly=1' 
  15. ""
  16. author:作者 
  17. text:評(píng)論 
  18. cmts :評(píng)論數(shù) 
  19. circles_views:被查看數(shù) 
  20. spread :轉(zhuǎn)發(fā)數(shù) 
  21. likes :點(diǎn)贊數(shù) 
  22. time : 時(shí)間 
  23.  
  24. ""
  25.  
  26.  
  27. headers = { "User-Agent": UserAgent(verify_ssl=False).random} 
  28. j = 0 
  29. k = 0 
  30. response_comment = requests.get(comment_api.format(0),headers = headers) 
  31. json_comment = response_comment.text 
  32. json_comment = json.loads(json_comment) 
  33. num = json_comment['total'
  34. cols = ['author','text','cmts','likes','circles_views','spreads','time'
  35. dataall = pd.DataFrame(index = range(num),columns = cols) 
  36. remain = json_comment['remain'
  37. print(remain) 
  38. while remain!= 0 : 
  39.    n = json_comment['count'
  40.    for i in range(n): 
  41.        if json_comment['data'][i]['text'] !='下面內(nèi)容已經(jīng)看過了,點(diǎn)此刷新'
  42.            dataall.loc[j,'author'] = json_comment['data'][i]['author'
  43.            dataall.loc[j,'text'] = json_comment['data'][i]['text'
  44.            dataall.loc[j,'cmts'] = json_comment['data'][i]['cmts'
  45.            dataall.loc[j,'likes'] = json_comment['data'][i]['likes'
  46.            dataall.loc[j,'circles_views'] = json_comment['data'][i]['circles_views'
  47.            dataall.loc[j,'spreads'] = json_comment['data'][i]['spreads'
  48.            dataall.loc[j,'time'] = json_comment['data'][i]['time'
  49.  
  50.            j+= 1              
  51.        else
  52.            k = -1     
  53.            break                              
  54.    k+= 1 
  55.    comment_api1 = comment_api.format(k)     
  56.    response_comment = requests.get(comment_api1,headers = headers) 
  57.    json_comment = response_comment.text 
  58.    json_comment = json.loads(json_comment) 
  59.    remain = json_comment['remain'
  60.    print('已完成 {}% !'.format(round(j/num*100,2))) 
  61.    time.sleep(3)           
  62. dataall = dataall.dropna() 
  63. dataall = dataall.drop_duplicates() 
  64.  
  65. dataall.to_csv('data_20181216_part3.csv',index = False

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

就這樣斷斷續(xù)續(xù)爬了一堆文件去重之后,得到了4027條數(shù)據(jù),格式如下

Python爬取4027條脈脈職言,解讀互聯(lián)網(wǎng)人的苦與難!

接下來對(duì)爬到的數(shù)據(jù)做一些簡(jiǎn)單的分析。因?yàn)椴⒉粵]有爬到全量評(píng)論,只是一個(gè)小樣本,所以結(jié)果肯定是有偏的,但爬的時(shí)間很隨機(jī),而且前前后后爬了兩周多,這樣選樣也比較隨機(jī),還是有一定的代表性。

脈脈中發(fā)言用戶有兩類,一類是完全匿名的,用系統(tǒng)生成的昵稱,一類顯示為xx公司員工,我們統(tǒng)計(jì)爬到的樣本中這兩種用戶的數(shù)量及發(fā)帖量。4027條職言中,不同發(fā)帖人共計(jì)1100名。

Python爬取4027條脈脈職言,解讀互聯(lián)網(wǎng)人的苦與難!

匿名發(fā)帖人超過70%,大家都并不愿意用真實(shí)身份發(fā)言,畢竟被公司/學(xué)校人肉風(fēng)險(xiǎn)還是很高的。

Python爬取4027條脈脈職言,解讀互聯(lián)網(wǎng)人的苦與難!

發(fā)帖數(shù)也毫無意外,匿名發(fā)帖人貢獻(xiàn)了85%以上的帖子。

匿名發(fā)帖人無法獲取更細(xì)致的數(shù)據(jù),但對(duì)于那些不匿名的發(fā)帖人,可以獲取他們所在公司 信息,將發(fā)帖數(shù)按公司匯總,看各大企業(yè)發(fā)帖量,可以作為整體的一個(gè)估計(jì)。統(tǒng)計(jì)時(shí)已經(jīng)考慮了公司名稱輸入不一致的情況,將螞蟻金服、支付寶等替換成了阿里巴巴,京東金融等替換成京東,今日頭條、抖音等替換為字節(jié)跳動(dòng),取發(fā)帖數(shù)TOP20。

Python爬取4027條脈脈職言,解讀互聯(lián)網(wǎng)人的苦與難!

可以看到,發(fā)帖人大多來自互聯(lián)網(wǎng)企業(yè),金融、地產(chǎn)等其他企業(yè)相對(duì)較少。

文本分析

對(duì)于轉(zhuǎn)發(fā)、評(píng)論數(shù)、點(diǎn)贊數(shù),因?yàn)橛信廊r(shí)間上的差異,所以不好直接比較,給出評(píng)論數(shù)最多的前5條評(píng)論,看看大家最愿意參與的話題是什么。

  1.  用一個(gè)字概括一下你的2018年。(1659條評(píng)論)
  2. 【再就業(yè)求助帖】本人是剛被優(yōu)化掉的知乎程序員,工作3年。比較想去BAT等大廠,希望貴廠HR們帶公司認(rèn)證來回復(fù)一下,發(fā)一發(fā)真實(shí)有hc的崗位,祝愿兄弟們都能找到新工作。(610條評(píng)論)
  3. 用兩個(gè)字概括你現(xiàn)在的工作。(477條評(píng)論)
  4. 網(wǎng)易漲今年薪漲了50%.....公司是發(fā)財(cái)了嗎?(458條評(píng)論)
  5. 用2個(gè)字總結(jié)你的工作。(415條評(píng)論)

1,4,5都是蠻有意思的問題,我們把1,4,5的評(píng)論都爬下來,做成詞云,看看大家都在說些什么。

用一個(gè)字概括你的2018年

爬蟲過程跟上面基本是一樣的,找到j(luò)son,不過這個(gè)可以爬到全部評(píng)論。

  1. # -*- coding: utf-8 -*- 
  2. ""
  3. Created on Fri Oct 19 18:50:03 2018 
  4. ""
  5. import urllib 
  6. import requests 
  7. from fake_useragent import UserAgent 
  8. import json 
  9. import pandas as pd 
  10. import time 
  11. # 發(fā)送get請(qǐng)求 
  12. comment_api = 'https://maimai.cn/sdk/web/gossip/getcmts?gid=18606987&page={}&count=50&hotcmts_limit_count=1&u=206793936&channel=www&version=4.0.0&_csrf=38244DlN-X0iNIk6A4seLXFx6hz3Ds6wfQ0Y&access_token=1.9ff1c9df8547b2b2c62bf58b28e84b97&uid=%22MRlTFjf812rF62rOeDhC6vAirs3A3wL6ApgZu%2Fo1crA%3D%22&token=%22rE8q1xp6fZlxvwygWJn1UFDjrmMXDrSE2tc6uDKNIDZtRErng0FRwvduckWMwYzn8CKuzcDfAvoCmBm7%2BjVysA%3D%3D%22' 
  13. ""
  14. author:作者 
  15. text:評(píng)論 
  16. 、 
  17.  
  18. ""
  19.  
  20.  
  21. #headers = { "User-Agent": UserAgent(verify_ssl=False).random,'Cookie':cookie} 
  22. headers = { "User-Agent": UserAgent(verify_ssl=False).random} 
  23. j = 0 
  24. k = 0 
  25. response_comment = requests.get(comment_api.format(0),headers = headers) 
  26. json_comment = response_comment.text 
  27. json_comment = json.loads(json_comment) 
  28.  
  29.  
  30. num = json_comment['total'
  31. cols = ['author','text'
  32. dataall = pd.DataFrame(index = range(num),columns = cols) 
  33.  
  34. while j < num : 
  35.    n = json_comment['count'
  36.    for i in range(n): 
  37.  
  38.        dataall.loc[j,'author'] = json_comment['comments'][i]['name'
  39.        dataall.loc[j,'text'] = json_comment['comments'][i]['text'
  40.        j+= 1              
  41.    k += 1 
  42.    comment_api1 = comment_api.format(k)  
  43.     
  44.    response_comment = requests.get(comment_api1,headers = headers) 
  45.    json_comment = response_comment.text 
  46.    json_comment = json.loads(json_comment) 
  47.    print('已完成 {}% !'.format(round(j/num*100,2))) 
  48.    time.sleep(3) 
  49.     
  50.          
  51. dataall.to_excel('用一個(gè)字概括你的2018年.xlsx'

爬下來之后,刪掉超過一個(gè)字的評(píng)論,按詞頻確定大小,做詞云圖如下

[[256539]]

用兩個(gè)字概括你現(xiàn)在的工作|用2個(gè)字總結(jié)你的工作

2,5是一樣的,爬下來合并到一起后分析。代碼不再重復(fù),實(shí)際上用上面那段代碼,找到j(luò)son地址后替換,任何一個(gè)話題下的評(píng)論都可以全爬到,刪掉不是2個(gè)字的評(píng)論后根據(jù)詞頻作圖。

Python爬取4027條脈脈職言,解讀互聯(lián)網(wǎng)人的苦與難!

使用SnowNLP對(duì)評(píng)論進(jìn)行情感分析,最終4027條中,積極的有2196條,消極的有1831條。

積極

Python爬取4027條脈脈職言,解讀互聯(lián)網(wǎng)人的苦與難!

消極

Python爬取4027條脈脈職言,解讀互聯(lián)網(wǎng)人的苦與難!

模型對(duì)大部分評(píng)論的情感傾向判斷的比較準(zhǔn)確,小部分有誤。

***對(duì)所有評(píng)論提取關(guān)鍵詞做詞云收尾。

Python爬取4027條脈脈職言,解讀互聯(lián)網(wǎng)人的苦與難!

責(zé)任編輯:未麗燕 來源: 量化小白上分記
相關(guān)推薦

2020-08-03 09:22:19

互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)

2019-12-11 15:05:27

互聯(lián)網(wǎng)IT云計(jì)算

2019-09-09 09:29:27

互聯(lián)網(wǎng)程序員職業(yè)

2013-08-14 11:03:35

2020-08-23 11:50:58

互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)

2019-03-20 10:10:17

互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)

2015-03-03 10:54:31

2022-05-27 15:35:17

互聯(lián)網(wǎng)職場(chǎng)安全感

2015-08-10 11:09:54

云測(cè)快碼

2018-08-15 09:02:59

產(chǎn)業(yè)互聯(lián)網(wǎng)工業(yè)互聯(lián)網(wǎng)物聯(lián)網(wǎng)

2020-03-03 15:45:08

互聯(lián)網(wǎng)求職行業(yè)從業(yè)者

2018-11-30 10:59:49

2019-05-23 15:29:25

互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)

2020-06-04 15:03:27

擺地?cái)?/a>互聯(lián)網(wǎng)風(fēng)口

2022-08-03 13:56:10

互聯(lián)網(wǎng)跳槽

2019-04-15 09:14:19

互聯(lián)網(wǎng)人潛臺(tái)詞黑話

2010-05-14 15:35:21

2017-08-03 16:37:35

互聯(lián)網(wǎng)法院司法

2019-12-30 10:32:10

CSS設(shè)計(jì)SQL

2019-09-06 16:57:02

跳槽那些事兒程序員技術(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)