Python抓取自己账号的企业微信群组里面的聊天记录进行数据统计汇总

时间: 2024-04-07 22:29:11 浏览: 22
可以使用Python调用企业微信API实现抓取自己账号的企业微信群组聊天记录的功能,具体步骤如下: 1. 获取企业微信API的访问凭证 企业微信API的访问凭证包括企业ID(CorpID)、应用的凭证密钥(CorpSecret)和应用的代理ID(AgentID),可以在企业微信管理后台的“应用与小程序”中找到。 ``` import requests # 获取企业微信API的访问凭证 def get_access_token(corpid, corpsecret): url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken" params = { "corpid": corpid, "corpsecret": corpsecret } r = requests.get(url, params=params) return r.json().get("access_token") ``` 2. 获取群组聊天记录 调用企业微信API的获取聊天记录接口,指定聊天记录的起始时间和结束时间,以及群组ID或者群组名称。 ``` import datetime # 获取群组聊天记录 def get_chat_record(access_token, chatid, start_time, end_time): url = "https://qyapi.weixin.qq.com/cgi-bin/appchat/getmsglist" params = { "access_token": access_token } data = { "chatid": chatid, "starttime": start_time, "endtime": end_time } r = requests.post(url, params=params, json=data) return r.json().get("errmsg"), r.json().get("recordlist") ``` 其中,参数start_time和end_time需要传入datetime类型的时间戳,可以使用如下代码进行转换: ``` import time # 将时间转换为时间戳 def datetime_to_timestamp(dt): return int(time.mktime(dt.timetuple())) # 获取当前时间的时间戳 now = datetime.datetime.now() end_time = datetime_to_timestamp(now) # 获取一天前的时间的时间戳 one_day_ago = now - datetime.timedelta(days=1) start_time = datetime_to_timestamp(one_day_ago) ``` 3. 统计聊天记录信息 解析获取到的聊天记录数据,统计需要的数据信息,例如每个人发了多少条消息、消息的类型、消息的长度等等。可以使用Python的pandas模块进行数据分析和处理。 ``` import pandas as pd # 统计聊天记录信息 def count_chat_record(recordlist): df = pd.DataFrame(recordlist) df["msgtype"] = df["msgtype"].apply(lambda x: "text" if x == 1 else "image") df["msglen"] = df["content"].apply(lambda x: len(x.get("text", ""))) return df.groupby("sender").agg({ "msgid": "count", "msgtype": lambda x: dict(x.value_counts()), "msglen": ["min", "max", "mean"] }).reset_index() ``` 4. 输出统计结果 将统计结果输出到文件或数据库中,方便后续的汇总和分析。 ``` # 输出统计结果 def output_result(result, output_file): with open(output_file, "w") as f: f.write(result.to_csv(index=False)) ``` 完整代码如下: ``` import requests import datetime import time import pandas as pd # 获取企业微信API的访问凭证 def get_access_token(corpid, corpsecret): url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken" params = { "corpid": corpid, "corpsecret": corpsecret } r = requests.get(url, params=params) return r.json().get("access_token") # 获取群组聊天记录 def get_chat_record(access_token, chatid, start_time, end_time): url = "https://qyapi.weixin.qq.com/cgi-bin/appchat/getmsglist" params = { "access_token": access_token } data = { "chatid": chatid, "starttime": start_time, "endtime": end_time } r = requests.post(url, params=params, json=data) return r.json().get("errmsg"), r.json().get("recordlist") # 将时间转换为时间戳 def datetime_to_timestamp(dt): return int(time.mktime(dt.timetuple())) # 统计聊天记录信息 def count_chat_record(recordlist): df = pd.DataFrame(recordlist) df["msgtype"] = df["msgtype"].apply(lambda x: "text" if x == 1 else "image") df["msglen"] = df["content"].apply(lambda x: len(x.get("text", ""))) return df.groupby("sender").agg({ "msgid": "count", "msgtype": lambda x: dict(x.value_counts()), "msglen": ["min", "max", "mean"] }).reset_index() # 输出统计结果 def output_result(result, output_file): with open(output_file, "w") as f: f.write(result.to_csv(index=False)) if __name__ == "__main__": corpid = "your_corpid" corpsecret = "your_corpsecret" agentid = "your_agentid" chatid = "your_chatid" output_file = "result.csv" # 获取访问凭证 access_token = get_access_token(corpid, corpsecret) # 获取聊天记录 now = datetime.datetime.now() end_time = datetime_to_timestamp(now) one_day_ago = now - datetime.timedelta(days=1) start_time = datetime_to_timestamp(one_day_ago) errmsg, recordlist = get_chat_record(access_token, chatid, start_time, end_time) if errmsg == "ok": # 统计聊天记录信息 result = count_chat_record(recordlist) # 输出统计结果 output_result(result, output_file) else: print("获取聊天记录失败:", errmsg) ``` 需要注意的是,企业微信的API接口需要按照规定的频次和方式进行调用,不要过于频繁或者超过限制,否则会被封禁。同时,聊天记录可能包含敏感信息,需要做好数据保护和隐私保密工作。

相关推荐

最新推荐

recommend-type

解决Python3 抓取微信账单信息问题

主要介绍了Python3 抓取微信账单信息,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

基于python的itchat库实现微信聊天机器人(推荐)

主要介绍了基于python的itchat库实现微信聊天机器人,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

python 微信自动打卡脚本微信自动打卡脚本

itchat.auto_login(hotReload=True)#微信账号登录无需二次扫码 groups_list = itchat.get_chatrooms(update=True) j = 0 for i in range(len(groups_list)):#查看前5个微信群名 print(groups_list[i]['NickName'],...
recommend-type

Python使用微信SDK实现的微信支付功能示例

主要介绍了Python使用微信SDK实现的微信支付功能,结合实例形式分析了Python调用微信SDK接口实现微信支付功能的具体步骤与相关操作技巧,需要的朋友可以参考下
recommend-type

Python批量查询关键词微信指数实例方法

在本篇文章中小编给大家整理的是关于Python批量查询关键词微信指数实例方法以及相关代码,需要的朋友们可以跟着学习下。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解释minorization-maximization (MM) algorithm,并给出matlab代码编写的例子

Minorization-maximization (MM) algorithm是一种常用的优化算法,用于求解非凸问题或含有约束的优化问题。该算法的基本思想是通过构造一个凸下界函数来逼近原问题,然后通过求解凸下界函数的最优解来逼近原问题的最优解。具体步骤如下: 1. 初始化参数 $\theta_0$,设 $k=0$; 2. 构造一个凸下界函数 $Q(\theta|\theta_k)$,使其满足 $Q(\theta_k|\theta_k)=f(\theta_k)$; 3. 求解 $Q(\theta|\theta_k)$ 的最优值 $\theta_{k+1}=\arg\min_\theta Q(
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。