前期准备
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()
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")
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(',')
输入完记得按回车, 结果如下图
改了自定义邮箱的, 恕鄙人能力有限, 无法获取
特别鸣谢
- 甲方大大
|