抓取qq群成员的昵称,头像的步骤:
1、分析请求信息
2、使用python 库 获取qq 头像,qq 号,昵称
具体实施
打开https://qun.qq.com/member.html,这个url是qq群的网页管理版,可以选择一个你加入的一个qq群,看到所有成员的信息,然后选择一个qq群,在chrome 浏览器中打开调试工具,可以看到它是请求了一个search_group_members的接口,传入群号,返回了群里的一些成员信息
请求分析完,现在能获取到每个群成员的信息了,返回的mems这个list里面存的是所有qq成员的信息,每个信息是一个字典,nick这个是qq昵称,uin这个key是每个人的qq号。
通过上面的请求也拿到了获取头像的url,就是qq号不一样而已,https://q4.qlogo.cn/g?b=qq&nk=285958&s=140,nk这个是qq号,想获取谁的头像,换个qq号就可以,这个作为一个参数即可。
上面的分析已经完成后,知道了通过search_mems这个接口可以获取到所有群成员信息,还有下载qq头像的url
核心代码
def get_mems(self): #发送post请求,获取到所有群成员信息 all_nicks=[] for i in range(0,2000,20): data='gc=%s&st=%s&end=%s&sort=0&bkn=1608777410'%(self.qq_num,i,i+self.mem_count)#这个是请求数据 m=self.Foma(data) cookies={ 'Cookie': 'pgv_pvi=9456217088; RK=XOrk2T7yZQ; ptcz=7beebe8cf154d2e2ae7a7b98b0096e1a2036807d0b54c90f91c0adb33c447abe; _ga=GA1.2.948016795.1591761068; pgv_pvid=3493788426; tvfe_boss_uuid=9d02bc06a2e45827; pac_uid=0_ca21ab9494274; pgv_info=ssid=s6535202992; verifysession=h011cc84b32bf461cc304c69dd9c7d7af60c33090379c028c336dcb331c1e62d68910e2319f29f71dd8; _qpsvr_localtk=0.43468354784382224; uin=o0280938995; skey=@N4M6aXiNH; p_uin=o0280938995; pt4_token=Y-BtrT2yzGgfFoYTpAymmNKqni3eU7lthSG1-WTuwD8_; p_skey=zHqc1n4O3kRWlHIAu*U0Uv9OozIYfcpDFWxNWChDNcw_;' }#cookie信息,浏览器里面复制的 requests.packages.urllib3.disable_warnings() res=requests.post(self.group_url,data=m,headers=cookies,verify=False).json()##发送post请求,传入cookie和data print(res) mems=res.get('mems')#mems这个key里面存的是一个list,所有的qq群成员在这里 if not os.path.isdir(self.dir_name):#判断这个群的文件夹是否存在,如果不存的话,创建 os.mkdir(self.dir_name) for m in mems: url='https://q4.qlogo.cn/g?b=qq&nk={}&s=140'.format(m.get('uin')) #通过替换qq号,生成每个qq成员的头像url abs_path = os.path.join(self.dir_name, '%s.jpg' % m.get('uin')) # 拼好每个图片的绝对路径,以qq号命名 # content这个在requests模块的博客里面说过了 nick_name = m.get('nick') # 昵称 print('下载完成%s' % nick_name) # 打印提示 all_nicks.append(nick_name) # 把所有的昵称保存到一个list里面,用来做词云 return all_nicks # 返回所有的昵称list
如需源码,后台回复,qqgroup 即可获取