Python Requests 实现爬取QQ群所有成员QQ号

Python 使用 Requests 库实现爬取QQ群所有成员的QQ号,并保存在txt文件中

安装依赖

1
pip3 install requests

复制参数

代码

将复制的cookie、bkn填入下面代码中的 COOKIEBKN 变量,然后运行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import os

import requests


class Qun:
def __init__(self, cookie: str, bkn: str) -> None:
self.cookie = cookie
self.bkn = bkn

def get_data(self, data: dict, params='search_group_members') -> dict:
url = f'https://qun.qq.com/cgi-bin/qun_mgr/{params}'
headers = {
'Cookie': self.cookie,
'Origin': 'https://qun.qq.com',
'Referer': 'https://qun.qq.com/member.html',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.42'
}
res = requests.post(url, headers=headers, data=data)
return res.json()

def get_gc(self):
'''
获取群号
'''
data = {
'bkn': self.bkn
}
params = 'get_group_list'
for data in self.get_data(data, params).get('join'):
yield data.get('gc')

def get_count(self, gc: int) -> int:
'''
获取某个群的成员数量
'''
data = {
'gc': gc,
'st': '0',
'end': '20',
'sort': '0',
'bkn': self.bkn
}
return self.get_data(data).get('search_count')

def set_data(self, gc: int, num: int):
'''
构造表单数据
'''
n = 0
for st in range(0, num, 20):
if st != 0:
n += 1
st += n
end = st + 20
else:
end = st + 20
if st >= num:
break
elif end > num:
yield {
'gc': gc,
'st': st,
'end': num,
'sort': '0',
'bkn': self.bkn
}
break
yield {
'gc': gc,
'st': st,
'end': end,
'sort': '0',
'bkn': self.bkn
}

def main(self):
if not os.path.exists('./qq'):
os.mkdir('./qq')
for gc in self.get_gc():
num = self.get_count(gc)
for data in self.set_data(gc, num):
for uins in self.get_data(data).get('mems'):
print(uins.get('uin'))
with open(f'./qq/{gc}.txt', 'a+') as f:
f.write(f'{uins.get("uin")}\n')


# https://qun.qq.com/member.html 请求头cookie
COOKIE = ''

# https://qun.qq.com/cgi-bin/qun_mgr/get_group_list 负载参数bkn
BKN = ''

if __name__ == '__main__':
Qun(COOKIE, BKN).main()