加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Python爬取4027条脉脉职言,解读互联网人的苦与难!

发布时间:2019-01-30 11:57:52 所属栏目:教程 来源:量化小白H
导读:脉脉是一个实名职场交际平台。之前爬了脉脉职言版块,或许爬了4027条评述,本文对爬取进程给出具体声名,对付评述内容仅做可视化说明,之前存了一堆这方面的文章,本日一看全都404了。 爬虫 如故行使python编程,对爬虫没乐趣的可以直接跳过看下部门,不影
副问题[/!--empirenews.page--]

脉脉是一个实名职场交际平台。之前爬了脉脉职言版块,或许爬了4027条评述,本文对爬取进程给出具体声名,对付评述内容仅做可视化说明,之前存了一堆这方面的文章,本日一看全都404了”。

爬虫

如故行使python编程,对爬虫没乐趣的可以直接跳过看下部门,不影响悦读。

网址https://maimai.cn/gossip_list。

必要先登录才气看到内里的内容。爬取方针:

Python爬取4027条脉脉职言,解读互联网人的苦与难!

只爬笔墨部门,图片不思量。

在赏识器内按F12打开开拓者,向下滑,会看到许多gossip开头的json文件(不可的话革新一下)

Python爬取4027条脉脉职言,解读互联网人的苦与难!

右键open in new tab,内里是一条一笔记录,text后头是评述内容。

Python爬取4027条脉脉职言,解读互联网人的苦与难!

我们感乐趣的信息是下面这些

Python爬取4027条脉脉职言,解读互联网人的苦与难!

看一看每个网站的地点,都是page=数字末了,以是爬的时辰写一个轮回,数字从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两个参数,给出了今朝全部可见评述剩余数和总数,可以作为轮回的遏制前提。

Python爬取4027条脉脉职言,解读互联网人的苦与难!

但较量坑的一点是,脉脉并不能可见全部评述,并且评述是不绝革新的,全部假如爬完一页轮回到下一页可能实行过许多次之后,他会提醒你:

Python爬取4027条脉脉职言,解读互联网人的苦与难!

直接看的时辰有这样的提醒会体验很好,但对付爬虫来说就不是很友爱了,,必要加个if判定。

其它爬的太快,也会堕落,记得加time.sleep。

Python爬取4027条脉脉职言,解读互联网人的苦与难!

或许把能踩的坑都踩了,以是假如顺遂的话,每次只能爬几百条信息,想爬更多的话,必要过一段时刻等信息更新的差不多了再爬,代码如下

  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. # 发送get哀求 
  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:评述 
  18. cmts :评述数 
  19. circles_views:被查察数 
  20. spread :转发数 
  21. likes :点赞数 
  22. time : 时刻 
  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'] !='下面内容已经看过了,点此革新': 
  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) 

数据可视化

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读