#!/usr/bin/python

# -*- coding: utf-8 -*-

import re

import time

import xlsxwriter

from selenium import webdriver

from bs4 import BeautifulSoup

import io

import sys

def qq_login(gid):

"""

通过selenium模拟登录,获取群成员信息

:param gid: 群号

:return: 页面源码

"""

driver = webdriver.Chrome()

driver.get('https://qun.qq.com/member.html#gid=%s' % gid)

driver.maximize_window()

time.sleep(3)

# 切换iframe授权登录

driver.switch_to_frame('login_frame')

driver.find_element_by_class_name('img_out_focus').click()

# 拉动滑动条加载剩余数据

for i in range(1000):

js = "window.scrollTo(0,document.body.scrollHeight)"

driver.execute_script(js)

# 获取页面源码并写入缓存

res = driver.page_source

driver.close()

return res

def dispose(res):

"""

处理页面源码数据,提取群成员信息

:param res: 页面源码

:return: 处理后的list_a列表

"""

# 改变标准输出的默认编码

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='gb18030')

soup = BeautifulSoup(res, 'lxml')

# 查找tr标签下的class属性包含‘mb’的节点树

c = soup.find_all('tr', attrs={"class": re.compile('mb')})

list_a = []

for i in c:

# 处理一些特殊字符‘\n’,'\t',替换成‘,’

str_a = i.text.replace('\n', '').replace('\t', ',')

# 通过正则表达式,切割以‘,’分割的字符串组成列表

data = re.split(r',', str_a)

# 去除空字符""

data_list = [i for i in data if i != '']

# 获取头像地址并插入列表

img = "https:" + i.img.get('src')

# 将头像地址插入列表中第3个位置的元素

data_list.insert(2, img)

# 删除列表中的序号

del data_list[0]

# 由于前面删除了空字符"",导致有些人的群昵称为空也删除,这里手动添加进去。

if len(data_list) < 9:

data_list.insert(2, '')

# 每一个成员信息为一个列表,添加到list_a作为元素

list_a.append(data_list)

return list_a

def write_execl(list_a):

"""

写入execl表格

:param list_a: 数据列表

:return:

"""

if len(list_a) > 2:

# 创建execl

new_time = time.strftime("%Y-%m-%d %H_%M_%S", time.localtime())

workbook = xlsxwriter.Workbook('{}.xlsx'.format(new_time)) # 新建excel表

worksheet = workbook.add_worksheet('sheet1') # 新建sheet(sheet的名称为"sheet1")

bold = workbook.add_format({

'bold': 1, # 字体加粗

'fg_color': 'green', # 单元格背景颜色

'align': 'center', # 对齐方式

'valign': 'vcenter', # 字体对齐方式

})

# 写表头

work_header = ['QQ昵称', '头像地址', '群昵称', 'QQ号', '性别', 'Q龄', '入群时间', '等级(积分)', '最后发言']

worksheet.write_row('A1', work_header, bold)

# 遍历多少条数据就写入多少行数据到execl,表头已经占了A1,所以从A2开始写入,index从0开始遍历(2+index)

for index in range(len(list_a)):

worksheet.write_row('A%s' % (2 + index), list_a[index])

# 最后关闭workbook,否则不会产生execl文件

workbook.close()

else:

print('请检查群号是否有误,没有获取到群成员信息,放弃写入execl')

if __name__ == '__main__':

res = qq_login('填写群号')

list_a = dispose(res)

write_execl(list_a)

python qq群文件_python 获取qq群成员列表数据相关推荐

  1. python 下载qq群文件_python获取所有qq好友、全部群所有成员部分信息,并保存列表至电子表格文件...

    序 发现上半年压了一堆实用代码,想了一下,还是开源吧.这个就先发布了. 警告 请合理使用此代码,严禁用于广告.信息售卖等反人类用途 使用时请注意不要超负荷访问腾讯服务器 (欢迎各位改良并Pull Re ...

  2. python微信群管理_python获取微信群和群成员

    首先用命令pip install itchat安装itchat,然后进到你要获取的群里去选择"保存到通讯录"那里将选项滑到右边选上,没有保存到通讯录的群是取不到信息的. 以下代码在 ...

  3. python 打卡程序_python获取微信企业号打卡数据并生成windows计划任务

    由于公司的系统用的是Java版本,开通了企业号打卡之后又没有预算让供应商做数据对接,所以只能自己捣鼓这个,以下是个人设置的一些内容,仅供大家参考 安装python python的安装,这里就不详细写了 ...

  4. python解析apk文件_Python获取apk文件URL地址实例

    Python获取apk文件URL地址实例 更新时间:2013年11月01日 10:22:39   作者:   我要评论 需要提取apk文件的特定URL地址的朋友可以看一下这个代码实例. 工作中经常需要 ...

  5. python下载bt文件_python获取bt种子的详细信息

    bt种子具体文件结构如下: 全部内容必须都为bencoding编码类型. 整个文件为一个字典结构,包含如下关键字 announce:tracker服务器的URL(字符串) announce-list( ...

  6. python分析qq好友_Python2.7获取QQ空间部分好友

    首先需要安装curl工具,然后复制curl 参考http://blog..net/gsls200808/article/details/46933307 浏览器打开http://user.qzone. ...

  7. 在线python爬取好友qq空间_Python3.6获取QQ空间全部好友列表

    首先要处理的是gtk算法:从上次分析以来代码并没有变 登录QQ空间后搜索gtk字符串,在三个js中出现了 /* |xGv00|e5808eb94a2bdffe3aae60cd22c5efe2 */ d ...

  8. [系统安全] 四十一.APT系列(6)Python解析PE文件并获取时间戳判断来源区域

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  9. android qq登录 获取用户信息吗,免登录 只需要一个QQ号就能获取QQ头像和QQ昵称 获取QQ用户信息API...

    [PHP] 纯文本查看 复制代码<?php // header header("Content-Type:application/json"); error_reportin ...

最新文章

  1. DataList的e.Item.ItemType == ListItemType.Item判断问题
  2. 关于 SAP Spartacus UI 框架选型问题
  3. Sum of Paths CodeForces - 1467D
  4. scrapy架构解析
  5. Ubuntu衍生(elementary os)虚拟机安装后的基础配置
  6. 华为lab-rs-v1-1.5_smart link
  7. 数值分析(7)-正交多项式
  8. 勤哲服务器项目模板,勤哲excel服务器,模板.doc
  9. 2015计算机软考试题及答案,2015年计算机软考网络工程师练习试题及答案
  10. 将视频或动态壁纸设置成桌面
  11. 小爱同学app安卓版_小爱同学app下载安卓版|语音助手下载_最火软件站
  12. imp命令导入指定表_oracle 导入imp 命令
  13. 对企业来说,网络营销渠道与传统营销的渠道有何不同?
  14. 维和医疗分队患者信息管理系统的开发与研究
  15. 大一高级计算机考试内容,大一计算机考试内容
  16. 人物志-丘吉尔 Success consists of going from failure to failure without loss of enthusiasm. —— Winston Chu
  17. Shellshock漏洞复现
  18. mysql 匹配多个字符,【单选题】在MySQL语句中,可以匹配0个到多个字符的通配符是( ) A. * B. % C. ? D. –...
  19. POI对word文档中的指定内容添加批注
  20. java 分布式介绍

热门文章

  1. 安徽省毫州市谷歌卫星地图下载(百度网盘离线包下载)
  2. Unity 回合制战斗系统(中级篇)-血条和伤害数值
  3. 手把手教你成为Shader编程实战达人—GPU
  4. Spring Boot实践 | 利用Spring Security快速搞定权限控制
  5. 【卡尔曼滤波】我所理解的卡尔曼滤波
  6. 高考倒计时100天,用python看看高三党
  7. 学校校车运营各项安全管理制度_学校校车安全管理的规章制度
  8. php生成推广二维码海报、合成图片demo
  9. 【OKR】11-12双月 OKR复盘
  10. SpringBoot @RunWith注解找不到