当前位置: 首页 > 科技观察

Python爬取4027个脉搏词解读互联网人的疾苦与难处!

时间:2023-03-17 16:45:41 科技观察

脉脉是实名职场社交平台。之前爬了脉脉招聘词版块,大概爬了4027条评论。本文对爬取过程进行了详细的描述,仅对评论内容做了可视化分析。之前收藏了一堆关于这个话题的文章,今天全部看完了。404》。爬虫还是使用python编程,如果对爬虫不感兴趣,可以直接跳过下一部分,不影响阅读。网址https://maimai.cn/gossip_list。需要先登录才能看到content.抓取目标:只抓取文字部分,不考虑图片,在浏览器中按F12打开开发者,向下滑动,会看到一大堆八卦开头的json文件(没有就刷新'twork).右键在新标签页打开,里面有一条一条的记录,文字后面是评论内容,我们感兴趣的信息如下,看一下各个网站的地址,都是以page=number结尾的,所以爬取的时候写一个循环,数字从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有两个参数total和保留在total的最开头的数字可以是所有剩余的评论数json用作循环的停止条件。但是坑的是脉脉看不到所有的评论,而且评论是不断刷新的,所以如果你爬完一个页面循环到下一页或者尝试多次,他会提示你:有这样的体验会很好直接看的时候有提示,但是对爬虫不是很友好是的,需要加一个if判断。另外爬的太快会出错,记得加time.sleep。大概把能踩的坑都踩了,所以顺利的话,一次只能爬几百条信息。如果想爬取更多,需要等待一段时间等待信息更新。代码如下#-*-coding:utf-8-*-"""CreatedonFriOct1918:50:032018"""importurllibimportrequestsfromfake_useragentimportUserAgentimportjsonimportpandasapdimporttimeimportdatetime#comment_api='https://maimai.cn/sdk/web/gossip_list?u=206793936&channel4.cs_r0=www.version=www.fw0JHa7JrTECXLA8njznQZVbi7d4Uo&access_token=1.b7e3acc5ef86e51a78f3410f99aa642a&uid=%22MRlTFjf812rF62rOeDhC6vAirs3A3wL6ApgZu%2Fo1crA%3D%22&token=%22xoNo1TZ8k28e0JTNFqyxlxg%2BdL%2BY6jtoUjKZwE3ke2IZ919o%2FAUeOvcX2yA03CAx8CKuzcDfAvoCmBm7%2BjVysA%3D%3D%22&page={}&jsononly=1'#发送get请求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'"""author:作者文字:评论cmts:评论数circles_views:浏览量传播:点赞数转发数time:time"""headers={"User-Agent":UserAgent(verify_ssl=False).random}j=0k=0response_comment=requests.get(comment_api.format(0),headers=headers)json_comment=response_comment。textjson_comment=json.loads(json_comment)num=json_comment['total']cols=['author','text','cmts','likes','circles_views','spreads','time']dataall=pd.DataFrame(index=range(num),columns=cols)remain=json_comment['remain']print(remain)whileremain!=0:n=json_comment['count']foriinrange(n):ifjson_comment['data'][i]['text']!='以下内容已阅读,点此刷新':dataall.loc[j,'author']=json_comment['data'][i]['author']数据全部。loc[j,'text']=json_comment['data'][i]['text']dataall.loc[j,'cmts']=json_comment['data'][i]['cmts']dataall。loc[j,'likes']=json_comment['data'][i]['likes']dataall.loc[j,'circles_views']=json_comment['data'][i]['circles_views']dataall.loc[j,'spreads']=json_comment['data'][i]['spreads']dataall.loc[j,'time']=json_comment['data'][i]['time']j+=1else:k=-1breakk+=1comment_api1=comment_api.format(k)response_comment=requests.get(comment_api1,headers=headers)json_comment=response_comment.textjson_comment=json.loads(json_comment)remain=json_comment['remain']print('{}%completed!'.format(round(j/num*100,2)))time.sleep(3)dataall=dataall.dropna()dataall=dataall.drop_duplicates()dataall.to_csv('data_20181216_part3.csv',index=False)数据可视化断断续续爬取一堆文件去重后,得到4027条数据,格式如下对爬取的数据做一些简单的分析,因为没有爬到全量的评论,只是小样本,所以结果肯定有偏差,但是爬取的时间很随机,来回爬取两个多星期,所以选样也是相对的y是随机的,但还是有一定的代表性的。在脉脉发言的用户有两种,一种是完全匿名,使用系统生成的昵称,另一种显示为xx公司员工。我们在抓取的样本中统计了这两类用户的数量和帖子的数量。在4027个贴子中,共有1100个不同的海报。70%以上的发帖者都是匿名的,大家都不愿意说出自己的真实身份。毕竟被公司/学校人性化的风险还是很大的。帖子的数量也不足为奇,匿名发帖者贡献了超过85%的帖子。匿名发帖者无法获得更详细的数据,但对于那些非匿名发帖者,你可以获取他们的公司信息,按公司汇总发帖数,看看各大公司的发帖量,可以作为一个整体的预估。公司名称输入不一致的情况已在统计中考虑。蚂蚁金服、支付宝等被阿里巴巴取代,京东金融等被京东取代。可以看出,发帖人大多来自互联网公司,其他如金融、地产等公司相对较少。对于文本分析,对于转发,评论数,点赞数,因为爬取时间有差异,不好直接比较。给出评论最多的前5条评论,看看大家最愿意参与哪些话题。用一个词总结你的2018。(1659条评论)【再就业求职帖】我是知乎程序员,刚刚做优化,工作3年。宁愿去BAT之类的大厂,希望贵厂HR回复有公司证明,发消息说有realhc职位。祝所有兄弟都能找到新的工作。(610comments)用两个词概括你目前的工作。(477条评论)网易今年涨薪50%……公司发财了吗?(458条评论)用两个词总结您的工作。(415条评论)第1、4、5题挺有意思的。下面我们把1、4、5的评论爬下来,做一个词云,看看大家在说什么。一句话,你2018年的爬取过程和上面基本一样,找json,但是这个可以爬取到所有的评论。#-*-coding:utf-8-*-"""CreatedonFriOct1918:50:032018"""importurllibimportrequestsfromfake_useragentimportUserAgentimportjsonimportpandasapdimporttime#发送get请求comment_api='https://maimai.cn/sdk/web/gossip/getcmts?gid=6981860={}&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'"""author:作者text:评论、"""#headers={"User-Agent":UserAgent(verify_ssl=False).random,'Cookie':cookie}headers={"User-Agent":UserAgent(verify_ssl=False).random}j=0k=0response_comment=requests.get(comment_api.format(0),headers=headers)json_comment=response_comment.textjson_comment=json.loads(json_comment)num=json_comment['total']cols=['author','text']dataall=pd.DataFrame(index=range(num),columns=cols)whilej