javascript 代码获取 QQ 群成员

昨天看到一条微博:「22 行 JavaScript 代码实现 QQ 群成员提取器」。 本着好奇心点击进去,发现没有达到效果,一是 QQ 版本升级了,二是博客里面的代码也有些繁琐。

于是自己试着写了一个,算上空行才 9 行,麻雀虽小,五脏俱全。

var ids    = document.querySelectorAll(".member_id");
var names  = document.querySelectorAll(".member_name");
var output = "", length = ids.length;
 
for(var i=0; i<length; i++){
    output += ids[i].innerHTML.slice(1,-1) + ":" + names[i].innerHTML + "\n";
}
 
console.log(output);

源码托管在github: https://gist.github.com/justjavac/6985824

使用方式

先进如 QQ 群空间,直接进去可以点此链接:http://qun.qzone.qq.com,如果想获取群信息,首先你必须是群成员。

登录进去后,最上面菜单有【我的群】,在次菜单中选择一个群。再点击【群成员】。

按 F12,调出开发者工具,然后选择 【javascript 控制台】。(如果使用 Chrome,可以直接按 Ctrl + Shift + J)。

把下面那段代码这贴进去,回车!

var ids    = document.querySelectorAll(".member_id");
var names  = document.querySelectorAll(".member_name");
var output = "", length = ids.length;

for(var i=0; i<length; i++){
    output += ids[i].innerHTML.slice(1,-1) + ":" + names[i].innerHTML + "\n";
}

console.log(output);

如果觉得复制来复制去太麻烦,我做了一个书签。

将下面的链接拖到书签栏:获取QQ群成员

然后你就可以,进入群通讯录 --> Ctrl + Shift + J --> 点击标签栏 --> 复制。

### 提取QQ群成员列表的方法 对于提取QQ群成员的信息,可以采用自动化脚本的方式通过浏览器控制台执行JavaScript代码来完成这一操作。具体来说,在登录到包含目标QQ群的网页版客户端之后,可以在开发者工具中的Console面板输入特定的JS代码片段用于抓取页面上展示的所有群成员详情[^4]。 ```javascript var members = $('#groupMember .list tr.mb'); var dataString = 'QQ\t昵称\t群名片\n'; for (var index = 0; index < members.length; index++) { var nicknameElement = members[index].children[2].children[2]; var cardNameElement = members[index].children[3].children[0]; var qqNumberElement = members[index].children[4]; var memberInfoLine = [ qqNumberElement.innerText, nicknameElement.innerText.trim(), cardNameElement.innerText.trim() ].join('\t'); dataString += memberInfoLine + '\n'; } console.log(dataString); ``` 上述代码会遍历所有群成员条目,并构建一个字符串`dataString`,其中包含了每位成员对应的QQ号码、昵称以及他们在该群内的自定义名称(即所谓的“群名片”)。最终的结果会被打印出来以便查看或者进一步处理。 值得注意的是,这种方法依赖于当前浏览界面下可见的内容结构;如果网站布局发生变化,则可能需要调整选择器路径以匹配新的HTML元素位置。另外,由于这涉及到个人隐私保护问题,所以在实际应用时应当遵循相关法律法规的要求,确保合法合规地收集此类信息。 #### 使用Python与Selenium库自动获取数据 除了手动在浏览器中运行JavaScript外,还可以借助像Selenium这样的Web驱动程序库编写Python脚本来模拟人类用户的交互行为,从而实现更加灵活高效的自动化任务执行过程。这种方式允许更复杂的逻辑设计,比如循环加载更多页数的数据直到全部读取完毕为止。 为了启动这个流程,先要安装必要的包: ```bash pip install selenium webdriver_manager pandas openpyxl ``` 接着创建一个新的Python文件并将以下内容复制进去: ```python from selenium import webdriver from selenium.webdriver.common.by import By import time import pandas as pd def setup_driver(): from webdriver_manager.chrome import ChromeDriverManager options = webdriver.ChromeOptions() options.add_argument('--headless') # 运行时不显示窗口 driver = webdriver.Chrome(executable_path=ChromeDriverManager().install(), options=options) return driver driver = setup_driver() try: login_url = "https://qun.qq.com/member.html#/groups" driver.get(login_url) input("请在此处扫码登录后按Enter键继续...") group_member_elements = driver.find_elements(By.CSS_SELECTOR, '#groupMember .list tr.mb') records = [] for element in group_member_elements: try: record = { 'qq': element.find_element(By.XPATH, './td[5]').text.strip(), 'nickname': element.find_element(By.XPATH, './td[3]/div/div').text.strip(), 'card_name': element.find_element(By.XPATH, './td[4]/span').text.strip() } records.append(record) except Exception as e: print(f"Error processing row: {e}") finally: df = pd.DataFrame(records) output_file = 'qq_group_members.xlsx' df.to_excel(output_file, index=False) print(f'Data has been saved to "{output_file}"') driver.quit() ``` 此段代码实现了如下功能: - 自动化设置无头模式下的Chrome WebDriver实例; - 访问指定链接并等待用户扫描二维码完成身份验证; - 定位到所有的群成员记录项,并从中抽取所需字段值存入字典对象; - 将这些字典组成的列表转换成Pandas DataFrame格式再保存为Excel表格文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值