生活随笔
收集整理的這篇文章主要介紹了
js实现爬取QQ群管理页面所有QQ群成员信息
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
js實現爬取QQ群管理頁面所有QQ群成員信息
QQ群管理頁面請求
如圖所示,當進入該頁面的時候,頁面會發送四個請求,bkn參數是每次進入該頁面時,自動生成的一個身份id,只要不關閉頁面,就不會變,如果重新進入頁面,該參數也會變.
1.第一個請求沒用,不解釋
2.get_group_list請求是拉取群組信息
3.get_friend_list請求是拉取好友信息,這里用不到
4.search_group_members請求是通過群號拉取成員信息
經測試發現,每次只能拉取少量成員,大概是不超過40個數據,如果超過,返回的就是錯誤代碼,所以后續使用遞歸函數,反復拉取
代碼
使用只需要每次將myId更換為進入頁面的bkn數值,上面有說.(關閉頁面重新進入后該參數會變,所以記得替換參數)
然后將代碼直接復制到控制臺回車,然后耐心等待即可
let start
= 0;let end
= 0let myId
= '983285666' 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
) 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, "sort": "0",},success
: function (res
) {end
+= 40;start
= end
+ 1console
.log(groupArr
);for (var i
in res
.mems
) {ResultList
.push([groupArr
[0].gn
, groupArr
[0].gc
, res
.mems
[i
].card
, res
.mems
[i
].uin
, res
.mems
[i
].nick
])};if (end
>= res
.count
) {start
= 0;end
= 0;groupArr
.shift()}setTimeout(() => { foo();}, 2 * 1000 + Math
.random() * 500);},})} else {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群成员信息的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。