不是群主或管理员,想批量导出QQ群成员信息 | QQ插件 | QQ机器人框架

2024年10月28日重新编辑:插件更新较大,原来的攻略不管用了,因此我做了更新。

2024年12月26日重新编辑:访问HTTP网址得到json页面后,json文件有时会不分段,因此做了修订。

是群主或管理员:直接在浏览器搜索“qq群成员管理”,并进入官网即可。

不是群主或管理员:我找到了一个基于NTQQ的机器人框架,通过调用API手动实现提取群成员的qq号。可以进入github按照指示操作(项目链接:https://github.com/LLOneBot/LLOneBot)。我也在本文总结了操作步骤,可以按照本文的提示操作。

具体步骤如下。

目录

第1步:安装QQ9,然后关闭QQ

第2步:安装llob_install.exe文件

第3步:设置LLOneBot

第4步:调用API,得到json文件

方法1:直接访问HTTP网址

方法2:命令行调用

方法3:python语言

方法4:C语言

第5步:将json转换为表格

方法1:cpp程序+分列

先把json转换为txt

 再把txt转换为表格,并分列

方法2:分列


第1步:安装QQ9,然后关闭QQ

首先安装QQ9,最好从官网(QQ-轻松做自己)下载,因为有的应用商店还没有QQ9。

安装好之后,先退出登录,关闭QQ。

第2步:安装llob_install.exe文件

然后,到官方github仓库(Releases · super1207/install_llob · GitHub)或者我的 gitee 仓库(myFile: 存一些word、ppt、cpp等文件)下载llob_install.exe 文件。

如下图是2种下载途径:

797ec0c6e1574fd08011029530eef68a.png   8feab06d77084346aac41a63eaccddf4.png

下载完后,Edge浏览器会显示黄色三角形感叹号。这时,点击下载项右边的省略号,选“保留”,再选“显示详细信息”,点“仍然保留”。如下图:

2b053f5fa36344c2b2d0a3334e337bcf.pngc1bb7d1ae2944596bdee8cca82c491b6.png

然后,右键点击下载的exe文件,以管理员身份运行。若校园网下载失败,可以换成移动网尝试。

安装完成后,打开QQ,点击“设置”,若左侧出现插件LiteLoaderQQNT和LLOneBot,即成功。如下图:

e4054331aff942439d973dcc0b166e10.png

第3步:设置LLOneBot

这一步先不做!!!如果后面第4步没有成功,再来这里参考下我的设置。

我的设置如下:

881bab14259d475c98b809eddb175c9d.png

66d767c525a94bc88fc217b520871aa6.png

第4步:调用API,得到json文件

所有API可以点击链接(点赞 - LLOneBot & NapCat)查看,根据所需API进行访问。这里只讲获取群成员列表的API,get_group_member_list。

官方给了很十几种方法,这里举例4种。我一般用方法1,比较简单。

方法1:直接访问HTTP网址

我想调用get_group_member_list,得到QQ群83xxxxx67所有群成员的信息。

那么,就先登录QQ,然后打开浏览器,访问链接 http://127.0.0.1:3000/get_group_member_list?group_id=83xxxxx67

注意,你登录的账号得在这个QQ群里,否则会访问失败。访问成功后,网页会返回json格式的页面。如下图:

e1f1e3bc1f864e5eafd552714d7a71b7.png

有时,导出的json页面会不分段,所有内容乱七八糟地挤在一起。这种情况下,执行第5步建议用方法2。

方法2:命令行调用

命令行访问示例如下,应该是把下面的curl命令都输入命令行即可。虽然我没试过,但给你们看看官方给方法:         

curl --location --request POST 'http://localhost:3000/get_group_member_list' \
--header 'User-Agent: Apifox/1.0.0 (https://apifox.com)' \
--header 'Content-Type: application/json' \
--data-raw '{
    "group_id": 0,
    "no_cache": true
}'

方法3:python语言

代码如下,输入后运行即可:

import http.client
import json

conn = http.client.HTTPSConnection("localhost", 3000)
payload = json.dumps({
   "group_id": 0,
   "no_cache": True
})
headers = {
   'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
   'Content-Type': 'application/json'
}
conn.request("POST", "/get_group_member_list", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

方法4:C语言

代码如下,输入后编译运行即可:

CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
   curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
   curl_easy_setopt(curl, CURLOPT_URL, "http://localhost:3000/get_group_member_list");
   curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
   curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
   struct curl_slist *headers = NULL;
   headers = curl_slist_append(headers, "User-Agent: Apifox/1.0.0 (https://apifox.com)");
   headers = curl_slist_append(headers, "Content-Type: application/json");
   curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
   const char *data = "{\n    \"group_id\": 0,\n    \"no_cache\": true\n}";
   curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
   res = curl_easy_perform(curl);
}
curl_easy_cleanup(curl);

第5步:将json转换为表格

这里是上一步方法1的后续。

若导出的 json 网页页面分段整齐,两种方法均可;

若没有分段而是挤在一起,推荐使用方法2。

方法1:cpp程序+分列

先把json转换为txt

首先,右键单击 json 网页页面,全选,复制到文本文件 json.txt 中。

注意,json.txt文件内容必须整齐地分行,如果像下图一样没有分行,可以先从网页粘贴到word,再从word粘贴到txt中。

 

然后,把下面的 cpp 代码和 json.txt 文件放在同一目录下,再编译运行。下面的 cpp 程序,用来读取 json.txt 中 card 和 user_id 的值,并保存到文本文件 result.txt 中:

#include <iostream>
#include <string>
#include <fstream> 
using namespace std;

int main(){
	ofstream fout("result.txt");
	ifstream fin("json.txt");
	string name, qq;
	int pos;
	
	while(getline(fin, qq)){
		pos = qq.find("user_id");
		if(pos == -1)
			continue;
		fout << qq.substr(pos+10) << ' ';
		getline(fin, name);
		getline(fin, name);
		pos = name.find("card\"");
		fout << name.substr(pos+8) << endl;
	}
	fout.close();
	fin.close();
	return 0;
}

如果运行后 result.txt 文件是空,那就吧 json.txt 文件的编码格式从 UNICODE 另存为ANSI。如下图。

 再把txt转换为表格,并分列

打开WPS或EXCEL,将 result.txt 所有内容复制到excel表格中。然后选中单元格,点击“数据 --> 分列”功能。如下图:

1332b09e0feb40c8aa363876ee1020eb.png

先选中“分隔符号”,用逗号分隔;再选固定宽度,分隔前2个字和后面的字。结果如下图:

6a78997ea84042ffb9a155eec79c85e5.png

方法2:分列

首先,直接把json页面的所有内容,复制到Excel的第一个单元格中。

然后,点击“数据 --> 分列”功能,先按照“{”符号进行分列,这样第一行每个单元格里是1个人的所有信息。再把第一行复制,然后粘贴时选择转置选项,把第一行转置为第一列。如下图:

接着,选中第一列,按照逗号进行分列,得到结果如下图:

最后留下你需要的列,再按照冒号分列,删除冒号左边的内容即可。

结束,感谢。

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

待到花烂漫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值