前期准备
qq安装
自行访问qq官网下载并安装qq
python环境安装
访问python官网选择自己心仪的版本进行下载
懒得找的话, 可访问同版本python传送门: 3.7.9版本
ps: 由于临时使用, 这里不浪费篇幅解释python环境变量的配置
安装时注意
- 勾选pip安装
一般默认勾选上了
- 安装路径不建议安装在c盘, 安装时建议调整路径为心仪的路径
代码依赖包下载
打开cmd, 逐行输入下列内容
快捷键: win+r, 输入"cmd", 回车
pip install selenium
pip install bs4
pip install pandas
chrome浏览器安装
百度一下, 你就知道
驱动下载
- 查看chrome版本, chrome浏览器访问 chrome://settings/help
例如, 我这里的版本为: 94.0.4606.41
- 访问chromedriver, 下载对应版本的驱动
开始
-
登陆qq
-
新建文件夹, 用于存放代码和结果
-
新建一个文本文件, 修改文件名为 “get_qq_num.py”
-
用记事本打开刚新建的文件, 复制粘贴以下代码
from selenium import webdriver from bs4 import BeautifulSoup import time import datetime import os import pandas as pd def save_data(driver): # 页面源码 res = driver.page_source # 关闭浏览器 driver.quit() # 用于暂存q号列表 qq_num_list = [] soup = BeautifulSoup(res,"lxml") html = soup.select("td") # 有无 <群标签>字段 qq_age = html[ 2 * 10 + 6].text.replace("\t", "").replace("\n", "") # 无<群标签> if "年" in qq_age: for i in range(5000): try: qq_num_list.append(html[ i*10 + 4].text.replace("\t", "").replace("\n", "")) except: break # 有<群标签> if "年" not in qq_age: for i in range(5000): try: qq_num_list.append(html[ i*11 + 4].text.replace("\t", "").replace("\n", "")) except: break now = datetime.datetime.today().strftime("%Y%m%d") # 新建文件夹 dataset_[yyyymmdd] try: os.mkdir("dataset_" + now) except: pass with open("./dataset_" + now[:8] + "/" + group_id + '.text', 'w') as f: f.write(",".join(qq_num_list)) if __name__ == '__main__': # 群号 group_id = '123456789' driver = webdriver.Chrome() driver.get(url='https://qun.qq.com/member.html#gid={}'.format(group_id) ) time.sleep(10) page_source_length = 0 while page_source_length < len(driver.page_source): page_source_length = len(driver.page_source) # 滚动下拉 driver.execute_script("var q=document.documentElement.scrollTop=100000") time.sleep(2.5) save_data(driver)
-
修改代码中的qq群号码, 保存修改
示例代码暂时用
123465789
显示 -
解压前面下载好的驱动到当前文件夹, 文件夹内容如下:
-
在cmd中输入
D:/Programs/Python/Python37/python.exe d:/test/get_qq_num.py
- 指令是 python安装路径 和 爬虫文件所在路径
- 如何打开cmd, 可以参考前面提到的步骤
- 执行后, 会打开浏览器, 访问页面, 登陆抠抠授权, 这里不要怕, 并不是电脑中毒了
-
结果
- 当前文件夹下多了个文件夹
dataset_[时间]
, 其中, 里面有个文件, 是群成员抠抠号码的文本信息(用,
隔开)
- 当前文件夹下多了个文件夹
拓展
获取群成员抠抠邮箱
- 复制粘贴上述获取到的抠抠号码文本信息
这里不妨假设是
123,456
- 打开chrome, 点击键盘上的
f12
- 在上图所指位置输入以下内容
"123,456".split(',').map(a=>
${a}@qq.com).join(',')
输入完记得按回车, 结果如下图
改了自定义邮箱的, 恕鄙人能力有限, 无法获取
特别鸣谢
- 甲方大大