Python-获取QQ群成员信息并存入excel及redis并发送邮件

‘‘‘
需求:
  1、请求qq群的接口,实现传入一个群号
  2、把群里每个人的 昵称、群备注、入群时间、qq号,性别,存到redis里面,用hash类型
    {"qq_num":XXX,"nick":"XXX","card":"XXX","gender":"男","入群时间":"2017-01-03"}
  3、把每个人的头像下载下来保存到本地,XXX.jpg
  4、把昵称、群备注、入群时间、qq号,性别这些信息写到excel里面
  5、把excel当做附件发到邮箱里面。
‘‘‘

import json
import os
import requests,redis,xlwt,yagmail,time

def getData():  #获取群接口的信息
    url = ‘XXXXXXXX‘ # 获取头像的url
    data = {
        ‘gc‘: 921144696,
        ‘st‘: 0,
        ‘end‘: 20,
        ‘sort‘: 0,
        ‘bkn‘: 341160307
    }
    headers = {‘cookie‘:‘RK=JQZpwBp1by; ptcz=6c30e26a9ed6be93d3de9e4c4aca3e55650cf99fcffa64729bd1d58a5fb209d9; pgv_pvi=779236352; pgv_pvid=6970909788; qb_qua=; qb_guid=818de686e29d412fa4ee9e99905ea166; Q-H5-GUID=818de686e29d412fa4ee9e99905ea166; NetType=; o_cookie=511402865; pac_uid=1_511402865; uin=o0511402865; ptisp=cnc; pgv_si=s3027380224; p_uin=o0511402865; traceid=a5329de24a; pgv_info=ssid=s9247410675; [email protected]; pt4_token=RnDTPQBuS*GfBBan7f7Kr1zwMrATa5NLuxnm*PATgNc_; p_skey=la4BrvIKFjioohQ0VaokxhOb4aZTXeIoOiZNaiDMGss_‘}
    req = requests.post(url,data,headers=headers,verify=False )
    return req.json()

def timestamp_to_str(timestamp=None,format=‘%Y-%m-%d %H:%M:%S‘):
    ‘‘‘时间戳转格式化好的时间,如果没有传时间戳,就获取当前的格式化时间‘‘‘
    if timestamp:
        time_tuple = time.localtime(timestamp) #把时间戳转成时间元组
        result = time.strftime(format,time_tuple) #把时间元组转成格式化好的时间
        return result
    else:
        return time.strftime(format)

def covert_gender(g):
    if g==0:
        return ‘男‘
    elif g==1:
        return ‘女‘
    return ‘未知‘

def filterData(data):
    result = []#存放每个用户的信息
    mem_data = data.get(‘mems‘)
    titles = [‘uin‘,‘join_time‘,‘card‘,‘g‘,‘nick‘]
    for mem in mem_data:
        d = {}
        for t in titles:
            val = mem.get(t)
            if t == ‘join_time‘:  # 转换加入时间
                val = timestamp_to_str(val)
            if t == ‘g‘:  # 转换性别
                val = covert_gender(val)
            d[t] = val
        result.append(d)
    return result

def writeExecl(data,excel_name):
    book = xlwt.Workbook()
    sheet = book.add_sheet(‘sheet1‘)
    titles = [‘uin‘,‘join_time‘,‘card‘,‘g‘,‘nick‘]
    for col,value in enumerate(titles,0):#写表头
        sheet.write(0,col,value)
    for row,mem in enumerate(data,1):
        for col,value in enumerate(titles,0):   #因为lie 是固定的,所以直接使用表头当key就可以了。
            val = mem.get(value)
            sheet.write(row,col,val) #写内容
    book.save(excel_name)
    print(‘excel写入文件‘)

def  saveRedis(data,key):
    host = ‘XXXXX‘
    passwd = ‘XXXXX‘
    r = redis.Redis(host=host, password=passwd, db=15, decode_responses=True)  # 0-15
    p = r.pipeline()
    for d in data:
        p.hset(key,d.get(‘uin‘),json.dumps(d,ensure_ascii=False))
    p.execute()
    print(‘redis写入完成!‘)

def downLoadPic(data):
    url = ‘http://q4.qlogo.cn/g?b=qq&nk=%s&s=140‘
    if not os.path.exists(‘pics‘):
        os.mkdir(‘pics‘)
    for d in data:
        uid = d.get(‘uin‘)
        content = requests.get(url%uid).content
        with open(‘pics/%s.jpg‘%d.get(‘nick‘),‘wb‘) as fw:
            fw.write(content)
    print(‘图片下载完成‘)

def sendmMail(file_name):
    user = ‘[email protected]‘
    passwd = ‘XXXXX‘  # 授权码
    smtp_host = ‘XXXXX‘
    mail = yagmail.SMTP(user=user, password=passwd, host=smtp_host)  # 连上邮箱
    mail.send(to=[‘[email protected]‘, ‘[email protected]‘, ‘[email protected]‘],
              cc=[‘[email protected]‘, ‘[email protected]‘, ‘[email protected]‘],
              subject=‘qq群信息‘,
              contents=‘明天上班‘,
              attachments=[file_name]
              )
    print(‘邮件发送完成!‘)

def main():
    data = getData()
    new_data = filterData(data)
    writeExecl(new_data,‘szz.xls‘)
    saveRedis(new_data,‘szz_stu‘)
    downLoadPic(new_data)
    sendmMail(‘szz.xls‘)
    print(‘done!‘)

原文地址:https://www.cnblogs.com/huoxn/p/10919503.html

时间: 2024-08-28 01:11:41

Python-获取QQ群成员信息并存入excel及redis并发送邮件的相关文章

PHP获取QQ群成员QQ号码

1.加入某个群 2.进入群空间http://qun.qzone.qq.com/group#!/25998059/member 备注:25998059为群号码 3.进入群成员列表 4.使用浏览,在某个群成员头像上面右击->审查元素,打开如下图所示的html代码 5.如上图拷贝 6.提取qq号码,以PHP为例 核心代码: $fileStr = file_get_contents(‘qqnumber.txt’); $qqNumberA = array(); preg_match_all(‘/\((.*

使用python UIAutomation从QQ2016(8.0)群界面获取所有群成员详细资料,

首先到https://github.com/yinkaisheng/Python-UIAutomation-for-Windows下载automation.py和AutomationClient.dll automation.py是我写的一个python封装微软UIAutomation API的一个module,使用非常简单运行automation.py -h查看帮助首先打开qq群聊天窗口,运行automation.py -a,然后3秒内移动鼠标到qq群上其中一个成员上面(下图右下角红框中),等

python获取原图GPS位置信息,轻松得到你的活动轨迹

一.图像EXIF信息 介绍 EXIF(Exchangeable image file format,可交换图像文件格式)是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据,如拍摄时间.图像分辨率.感光值.GPS坐标等. Exif最初由日本电子工业发展协会在1996年制定,版本为1.0.1998年,升级到2.1,增加了对音频文件的支持.2002年3月,发表了2.2版. Exif可以附加于JPEG.TIFF.RIFF等文件之中,为其增加有关数码相机拍摄信息的内容和索引图或图像处理软件

C#获取QQ群所有成员的QQ号

之前有朋友需要获取自己的qq群的所有成员的qq号,于是做了下研究,也算是有所成功,记录下来 方案一 在晚上搜到的基本上都是登录qq群官网https://qun.qq.com,然后找到群管理,按照网友的说法,自己创建的群或者自己是群的管理的群是可以一件到处复制的, 但是我研究了一通,貌似现在并没有这个功能了,所以放弃该方案 方案二 我们是可以通过群管理看到自己加入的群的成员的 但是,每次只能加载21个,如果需要复制所有的,那么需要不停地往下拉动滚动条,直到所有的都出现了,然后再开始复制,然后粘贴到

集群通信组件Tribes之怎样维护集群成员信息

一个集群包括若干成员,要对这些成员进行管理就必需要有一张包括全部成员的列表.当要对某个节点做操作时通过这个列表能够准确找到该节点的地址进而对该节点发送操作消息.怎样维护这张包括全部成员的列表是本节要讨论的主题. 成员维护是集群的基础功能,一般划分一个独立模块或层完毕此功能,它提供成员列表查询.成员维护.成员列表改变事件通知等能力. 因为tribes定位于基于同等节点之间的通信,所以并不存在主节点选举的问题,它所要具备的功能是自己主动发现节点,即新节点增加要通知集群其它成员更新成员列表,让每一个节

如何维护集群成员信息

一个集群包含若干成员,要对这些成员进行管理就必须要有一张包含所有成员的列表,当要对某个节点做操作时通过这个列表可以准确找到该节点的地址进而对该节点发送操作消息.如何维护这张包含所有成员的列表是本节要讨论的主题. 成员维护是集群的基础功能,一般划分一个独立模块或层完成此功能,它提供成员列表查询.成员维护.成员列表改变事件通知等能力.由于tribes定位于基于同等节点之间的通信,所以并不存在主节点选举的问题,它所要具备的功能是自动发现节点,即新节点加入要通知集群其他成员更新成员列表,让每个节点都能及

火车头采集器如何采集QQ群成员中的QQ号

如何采集QQ群群员QQ号,采集QQ号,批量采集QQ号 众所周知,QQ群群员QQ号无法导出,即使会员也不可以,那我们只能通过三方工具来实现我们的要求,那今天我们讲讲如何通过火车采集器来采集QQ群群员QQ号. 使用工具 火车采集器 抓包工具 Fiddler QQ (轻聊版) 隐藏内容 采集准备 1.开启Fiddler代理 打开Fiddler软件,依次点击Tools – Options – Connections 设置代理端口:Fiddler listens on port : 8888 勾选:All

Powershell 获取本地组成员信息

工作当中需要查看本地组成员信息,从网上看到使用net localgroup 命令可以实现本地组成员信息,经过再加工得到如下信息,备忘至此! $localgroups = "Administrators","Remote Desktop Users" $result = @()foreach($group in $localgroups){$groupmembers = net localgroup $groupforeach($member in $groupmem

python 获取linux的内存信息

1.安装psutil源码 https://pypi.python.org/pypi?:action=display&name=psutil#downloads 找到psutil-5.2.2.tar.gz 点击即可下载 shell # tar xzvf psutil-5.2.2.tar.gz shell # cd psutil-5.2.2 shell # python setup.py install 2.使用psutil获取内存信息 终端输入python shell # python Pytho