📜  使用Python将 WhatsApp 聊天记录导出到 Excel

📅  最后修改于: 2022-05-13 01:55:24.701000             🧑  作者: Mango

使用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 步:现在导出特定用户的对话。

按着这些次序:

  1. 转到您手机的WhatsApp应用程序。
  2. 通过单击他或她的姓名来选择您要导出其对话的用户。
  3. 现在,在右上角,单击三个点。
  4. 从单击更多时出现的菜单中选择导出聊天
  5. 单击导出聊天后,将出现一个应用程序列表,您必须选择Pushbullet
  6. 您现在可以在 PC 上的 Pushbullet.com 上看到一个包含聊天内容的文本文件。

第 5 步:现在,从Pushbullet.com获取 API 密钥



在您的 PC 上打开 Pushbullet.com 并转到设置然后向下滚动并单击访问令牌。单击创建访问令牌并复制令牌

第六步:编写导出聊天记录到excel的代码。

  • 现在使用PushBullet验证密钥。如果您的密钥无效(Pushbullet API返回 401 ),则会引发InvalidKeyError
  • 您可以使用get_pushes获取您过去生成的所有推送,这意味着您提交给 Pushbullet 的所有文件。但是,我们想要最新的推送,它将出现在所有推送列表中的索引0 ”处。现在我们已经收到了最新的推送,我们需要从 Pushbullet 检索我们导出对话的 URL,所以只需提供file_url
  • 创建一个文本文件来保存所有聊天记录,然后使用urlretrieve方法从URL检索所有数据。 urlretrieve接受两个参数:URL 和保存所有数据的文本文件。
  • 打开文本文件,逐行读取所有数据,使用utf8编码数据进行编码。从文本文件中读取后,它将文本文件的内容以列表格式保存。因为索引' 0 ' 包含一些垃圾文本,我们必须使用列表切片删除它。
  • 运行循环以使用列表切片从文件数据中提取DateTimeNameMessage 。提取它们后,只需将它们添加到列表中即可。
  • 最后,使用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)


输出: