使用Python将 WhatsApp 聊天记录导出到 Excel
在本文中,我们将讨论如何将特定用户的聊天记录导出到Excel 表格。为了导出聊天记录,我们将使用几个Python模块和库。
在 Excel 文件中,我们将创建四列:日期、时间、名称和消息。我们将通过 Pandas 创建这些列,将所有聊天详细信息导出到各自的列,并使用 Pushbullets 使用 API 密钥检索数据。
需要的模块:
- Pandas : Pandas 是一个建立在 NumPy 库之上的开源库。它是一个Python包,提供用于处理数值数据和时间序列的各种数据结构和操作。
pip install pandas
- pushbullet:它允许您向 Android 和 iOS 设备发送推送通知。
pip install pushbullet.py == 0.9.1
- openpyxl :它是一个Python库,使用它可以对 excel 文件执行多项操作,如读取、写入、算术运算和绘制图形。让我们看看如何使用 openpyxl 执行不同的算术运算。
pip install openpyxl
分步实施:
第 1 步:在您的 PC 和手机上设置Pushbullet帐户
第 2 步:在手机上安装Pushbullet 应用程序。使用您用于登录 PC 的相同电子邮件地址登录。
第三步:在电脑和手机上创建一个帐户后。
导航到 PC 左上角的“设备”选项。然后选择添加设备,然后添加您的手机。添加手机时,手机名称将显示在此处。
第 4 步:现在导出特定用户的对话。
按着这些次序:
- 转到您手机的WhatsApp应用程序。
- 通过单击他或她的姓名来选择您要导出其对话的用户。
- 现在,在右上角,单击三个点。
- 从单击更多时出现的菜单中选择导出聊天。
- 单击导出聊天后,将出现一个应用程序列表,您必须选择Pushbullet 。
- 您现在可以在 PC 上的 Pushbullet.com 上看到一个包含聊天内容的文本文件。
第 5 步:现在,从Pushbullet.com获取 API 密钥
在您的 PC 上打开 Pushbullet.com 并转到设置然后向下滚动并单击访问令牌。单击创建访问令牌并复制令牌
第六步:编写导出聊天记录到excel的代码。
- 现在使用PushBullet验证密钥。如果您的密钥无效(Pushbullet API返回 401 ),则会引发InvalidKeyError 。
Syntax: PushBullet(Your_Access_token)
- 您可以使用get_pushes获取您过去生成的所有推送,这意味着您提交给 Pushbullet 的所有文件。但是,我们想要最新的推送,它将出现在所有推送列表中的索引“ 0 ”处。现在我们已经收到了最新的推送,我们需要从 Pushbullet 检索我们导出对话的 URL,所以只需提供file_url 。
Syntax:
pb.get_pushes() # Get all the Pushes
all_pushes[0] # Get the latest pushes
- 创建一个文本文件来保存所有聊天记录,然后使用urlretrieve方法从URL检索所有数据。 urlretrieve接受两个参数:URL 和保存所有数据的文本文件。
Syntax: urllib.request.urlretrieve(Chats_URL, Text_file_name)
- 打开文本文件,逐行读取所有数据,使用utf8编码对数据进行编码。从文本文件中读取后,它将文本文件的内容以列表格式保存。因为索引' 0 ' 包含一些垃圾文本,我们必须使用列表切片删除它。
- 运行循环以使用列表切片从文件数据中提取Date 、 Time 、 Name和Message 。提取它们后,只需将它们添加到列表中即可。
- 最后,使用Pandas库构建一个数据框,用于将所有数据存储在Excel 工作表上。 pd.DataFrame接受两个参数:文本列表和要在 Excel 工作表上创建的列。之后,只需使用to_excel方法将它们保存到一个 excel 文件。
下面是完整的实现:
Python3
# Import following modules
import urllib.request
import pandas as pd
from pushbullet import PushBullet
# Get Access Token from pushbullet.com
Access_token = "Your Access Token"
# Authentication
pb = PushBullet(Access_token)
# All pushes created by you
all_pushes = pb.get_pushes()
# Get the latest push
latest_one = all_pushes[0]
# Fetch the latest file URL link
url = latest_one['file_url']
# Create a new text file for storing
# all the chats
Text_file = "All_Chats.txt"
# Retrieve all the data store into
# Text file
urllib.request.urlretrieve(url, Text_file)
# Create an empty chat list
chat_list = []
# Open the Text file in read mode and
# read all the data
with open(Text_file, mode='r', encoding='utf8') as f:
# Read all the data line-by-line
data = f.readlines()
# Excluded the first item of the list
# first items contains some garbage
# data
final_data_set = data[1:]
# Run a loop and read all the data
# line-by-line
for line in final_data_set:
# Extract the date, time, name,
# message
date = line.split(",")[0]
tim = line.split("-")[0].split(",")[1]
name = line.split(":")[1].split("-")[1]
messag = line.split(":")[2][:-1]
# Append all the data in a List
chat_list.append([date, tim, name, messag])
# Create a dataframe, for storing
# all the data in a excel file
df = pd.DataFrame(chat_list,
columns = ['Date', 'Time',
'Name', 'Message'])
df.to_excel("BackUp.xlsx", index = False)
输出: