python qq群文件_python 获取qq群成员列表数据
#!/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群成员列表数据相关推荐
- python 下载qq群文件_python获取所有qq好友、全部群所有成员部分信息,并保存列表至电子表格文件...
序 发现上半年压了一堆实用代码,想了一下,还是开源吧.这个就先发布了. 警告 请合理使用此代码,严禁用于广告.信息售卖等反人类用途 使用时请注意不要超负荷访问腾讯服务器 (欢迎各位改良并Pull Re ...
- python微信群管理_python获取微信群和群成员
首先用命令pip install itchat安装itchat,然后进到你要获取的群里去选择"保存到通讯录"那里将选项滑到右边选上,没有保存到通讯录的群是取不到信息的. 以下代码在 ...
- python 打卡程序_python获取微信企业号打卡数据并生成windows计划任务
由于公司的系统用的是Java版本,开通了企业号打卡之后又没有预算让供应商做数据对接,所以只能自己捣鼓这个,以下是个人设置的一些内容,仅供大家参考 安装python python的安装,这里就不详细写了 ...
- python解析apk文件_Python获取apk文件URL地址实例
Python获取apk文件URL地址实例 更新时间:2013年11月01日 10:22:39 作者: 我要评论 需要提取apk文件的特定URL地址的朋友可以看一下这个代码实例. 工作中经常需要 ...
- python下载bt文件_python获取bt种子的详细信息
bt种子具体文件结构如下: 全部内容必须都为bencoding编码类型. 整个文件为一个字典结构,包含如下关键字 announce:tracker服务器的URL(字符串) announce-list( ...
- python分析qq好友_Python2.7获取QQ空间部分好友
首先需要安装curl工具,然后复制curl 参考http://blog..net/gsls200808/article/details/46933307 浏览器打开http://user.qzone. ...
- 在线python爬取好友qq空间_Python3.6获取QQ空间全部好友列表
首先要处理的是gtk算法:从上次分析以来代码并没有变 登录QQ空间后搜索gtk字符串,在三个js中出现了 /* |xGv00|e5808eb94a2bdffe3aae60cd22c5efe2 */ d ...
- [系统安全] 四十一.APT系列(6)Python解析PE文件并获取时间戳判断来源区域
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...
- android qq登录 获取用户信息吗,免登录 只需要一个QQ号就能获取QQ头像和QQ昵称 获取QQ用户信息API...
[PHP] 纯文本查看 复制代码<?php // header header("Content-Type:application/json"); error_reportin ...
最新文章
- DataList的e.Item.ItemType == ListItemType.Item判断问题
- 关于 SAP Spartacus UI 框架选型问题
- Sum of Paths CodeForces - 1467D
- scrapy架构解析
- Ubuntu衍生(elementary os)虚拟机安装后的基础配置
- 华为lab-rs-v1-1.5_smart link
- 数值分析(7)-正交多项式
- 勤哲服务器项目模板,勤哲excel服务器,模板.doc
- 2015计算机软考试题及答案,2015年计算机软考网络工程师练习试题及答案
- 将视频或动态壁纸设置成桌面
- 小爱同学app安卓版_小爱同学app下载安卓版|语音助手下载_最火软件站
- imp命令导入指定表_oracle 导入imp 命令
- 对企业来说,网络营销渠道与传统营销的渠道有何不同?
- 维和医疗分队患者信息管理系统的开发与研究
- 大一高级计算机考试内容,大一计算机考试内容
- 人物志-丘吉尔 Success consists of going from failure to failure without loss of enthusiasm. —— Winston Chu
- Shellshock漏洞复现
- mysql 匹配多个字符,【单选题】在MySQL语句中,可以匹配0个到多个字符的通配符是( )
A. * B. % C. ? D. –...
- POI对word文档中的指定内容添加批注
- java 分布式介绍