js实现爬取QQ群管理页面所有QQ群成员信息

  • QQ群管理页面请求
  • 代码
  • 导出的效果

QQ群管理页面请求

如图所示,当进入该页面的时候,页面会发送四个请求,bkn参数是每次进入该页面时,自动生成的一个身份id,只要不关闭页面,就不会变,如果重新进入页面,该参数也会变.
1.第一个请求没用,不解释
2.get_group_list请求是拉取群组信息

3.get_friend_list请求是拉取好友信息,这里用不到
4.search_group_members请求是通过群号拉取成员信息
经测试发现,每次只能拉取少量成员,大概是不超过40个数据,如果超过,返回的就是错误代码,所以后续使用递归函数,反复拉取

代码

使用只需要每次将myId更换为进入页面的bkn数值,上面有说.(关闭页面重新进入后该参数会变,所以记得替换参数)
然后将代码直接复制到控制台回车,然后耐心等待即可

// An highlighted block
let start = 0;let end = 0let myId = '983285666' //特定id,每次进入页面会生成这个id,复制粘贴到这里就行let ResultList = new Array(); //用于存储最后要导出的数据let groupArr = new Array(); //存储所有群$.ajax({method: "post",async: false,url: "https://qun.qq.com/cgi-bin/qun_mgr/get_group_list",data: {"bkn": myId},success: function (res) {groupArr = res.create.concat(res.join) //res.create是自己创建的群.res.join是加入的群,合并到groupArr数组foo()},})function foo() {if (groupArr.length > 0) {$.ajax({method: "post",url: "https://qun.qq.com/cgi-bin/qun_mgr/search_group_members",async: false,data: {"bkn": myId,"gc": groupArr[0].gc, //群号"st": start,"end": end + 40, //每次请求40条是因为请求条数过大,返回的就是错误代码"sort": "0",},success: function (res) {end += 40;start = end + 1//存储结果到缓存console.log(groupArr);for (var i in res.mems) {ResultList.push([groupArr[0].gn, //群名称groupArr[0].gc, //群号res.mems[i].card, //人员群昵称res.mems[i].uin, //人员QQ号res.mems[i].nick //人员元昵称])};if (end >= res.count) {//res.count是群现有人数// var title = "群名称,群号,人员群内昵称,人员QQ号,人员昵称";// var downList = '\n' + ResultList.join('\n')// var data = "\ufeff" + title + downList;// const blob = new Blob([data], {//     type: 'text/csv,charset=UTF-8'// });// const csvUrl = URL.createObjectURL(blob);// let link = document.createElement('a');// link.download = groupArr[0].gn +`.csv`; //文件名字// link.href = csvUrl;// link.click();// ResultList = [];//上面注释部分是每个群分别生成一个csv文件导出,如果想要单独导出,放开上面,隐藏下面else即可start = 0;end = 0;groupArr.shift()}setTimeout(() => { //设置时间是因为请求过快,你会被限制进入该页面foo();}, 2 * 1000 + Math.random() * 500);},})} else {//生成csv并下载,这里是吧所有群人员导入到一个csv文件,如果需要分别导出,隐藏这里,放开上面注释即可var title = "群名称,群号,人员群内昵称,人员QQ号,人员昵称";var downList = '\n' + ResultList.join('\n')var data = "\ufeff" + title + downList;const blob = new Blob([data], {type: 'text/csv,charset=UTF-8'});const csvUrl = URL.createObjectURL(blob);let link = document.createElement('a');link.download = `所有群人员信息.csv`; //文件名字link.href = csvUrl;link.click();ResultList = [];}}

导出的效果

js实现爬取QQ群管理页面所有QQ群成员信息相关推荐

  1. 【Mac】从0开始用node.js制作爬取结果的查询网站

    [Mac]从0开始用node.js制作爬取结果的查询网站 实验要求 实验结果展示 简单了解实验项目所需知识 1 爬虫原理 2 JavaScript语法 3 网络元素的提取 4 正则表达式 5 其他有关 ...

  2. Python爬虫——教你js逆向爬取网易云评论

    大家好!我是霖hero 正所谓条条道路通罗马,上次我们使用了Selenium自动化工具来爬取网易云的音乐评论,Selenium自动化工具可以驱动浏览器执行特定的动作,获得浏览器当前呈现的页面的源代码, ...

  3. python爬取大众点评数据_利用Node.js制作爬取大众点评的爬虫

    前言 Node.js天生支持并发,但是对于习惯了顺序编程的人,一开始会对Node.js不适应,比如,变量作用域是函数块式的(与C.Java不一样):for循环体({})内引用i的值实际上是循环结束之后 ...

  4. Node.js 爬虫爬取电影信息

    Node.js 爬虫爬取电影信息 本文地址:https://blog.csdn.net/weixin_45580251/article/details/107669713 爬取的是1905电影网的信息 ...

  5. js逆向爬取某音乐网站某歌手的歌曲

    js逆向爬取某音乐网站某歌手的歌曲 一.分析网站 1.案例介绍 2.寻找列表页Ajax入口 (1)页面展示图. (2)寻找部分歌曲信息Ajax的token. (3)寻找歌曲链接 (4)获取歌曲名称和i ...

  6. python 爬取豆瓣top100电影页面

    python 爬取豆瓣top100电影页面 运行结果截图: 代码: (原网站:https://movie.douban.com/top250) 1.将页面保存 避免多次访问 (登陆状态需页面cooki ...

  7. 使用 Scrapy + Selenium 爬取动态渲染的页面

    点击上方蓝字关注我们! 背景 在通过scrapy框架进行某些网站数据爬取的时候,往往会碰到页面动态数据加载的情况发生,如果直接使用scrapy对其url发请求,是绝对获取不到那部分动态加载出来的数据值 ...

  8. python爬虫动态加载页面_Python+Selenium爬取动态加载页面(2)

    注: 上一篇<Python+Selenium爬取动态加载页面(1)>讲了基本地如何获取动态页面的数据,这里再讲一个稍微复杂一点的数据获取全国水雨情网.数据的获取过程跟人手动获取过程类似,所 ...

  9. 使用scrapy +selenium爬取动态渲染的页面

    背景 在通过scrapy框架进行某些网站数据爬取的时候,往往会碰到页面动态数据加载的情况发生,如果直接使用scrapy对其url发请求,是绝对获取不到那部分动态加载出来的数据值.但是通过观察我们会发现 ...

  10. java爬虫拉勾网_[Java教程]node.js爬虫爬取拉勾网职位信息

    [Java教程]node.js爬虫爬取拉勾网职位信息 0 2017-03-14 00:00:21 简介 用node.js写了一个简单的小爬虫,用来爬取拉勾网上的招聘信息,共爬取了北京.上海.广州.深圳 ...

最新文章

  1. java随机产生100个大小写字母_Java生成固定长度的随机字符串(以大小写字母和数字)...
  2. .Net之用户控件笔记
  3. 云电脑是什么_云电脑为什么发布新1代5G无影?带你了解PC
  4. spad 探测器_从光到光子—“单光子”探测器
  5. linq to sql 行转列_SQL进阶:SQL高级编程语法实例
  6. 服装这个行业其实一直有点尴尬
  7. ssis 列转换_SSIS组播转换概述
  8. vector中针对自定义类型的排序
  9. uniapp - 接入科大讯飞语音评测
  10. GAT1400---视图库标准
  11. Spring MVC - 拦截器实现 和 用户登陆例子
  12. Composition API 使用
  13. 女生学Java软件开发好就业吗
  14. 【转载】如何成为优秀的网络安全工程师
  15. jQuery 效果 - 淡入淡出,fadeIn,fadeOut,fadeToggle的使用
  16. 红米10xpro手机图纸
  17. mcu 与电量计 BQ40Z80 通信,读取电芯电量
  18. Titanic 泰坦尼克号预测-Tensorflow 方法-【Kaggle 比赛】
  19. 京东区块链之供应链应用篇:溯源应用结合区块链能碰撞出什么火花?
  20. JS-开启麦克风和摄像头权限

热门文章

  1. Tushare 简介与使用
  2. linux双机热备软件Rose,Linux Rose HA 双机热备软件原理
  3. FastStone Capture——轻量级长截屏软件
  4. 给扔物线 HenCoder Plus 学员的一次分享文字版
  5. php导出word乱码,php导出的word会乱码吗
  6. 存储过程和函数的操作
  7. Ubuntu的版本号命名规则
  8. android 息屏锁频录音、录视频、电话自动录音
  9. 韩顺平--Java坦克大战
  10. java常用设计模式详解及应用