facebook_分析您的Facebook Messenger聊天

facebook

深入了解Facebook拥有的一小部分数据。

˚Facebook总是提供您的数据,它存储的档案。 当Cambridge Analytica数据泄露事件发生时,它就暴露出来。 我认为Google为用户存储的用户数据比Facebook存储的用户数据更多。 我发现我所有的搜索都不在Google上,而是在外部站点(例如GitHub)上都由Google存储。 尽管可以删除此数据,但是仍然可以在任何地方访问此数据,只需通过用户名和密码的组合即可访问。

想法

我对Data Visualizations着迷,并想要一个开始。 所以在Cambridge Analytica事件发生前的几个月,我想到了绘制与Facebook朋友聊天的图表。 所以我的想法是绘制一天中发送或接收的消息总数。我通常使用python编写代码,并且知道一个绘制库'matplotlib'。

入门:收集聊天数据

因此,最终在决定做什么和使用什么技术之后,主要任务是从聊天中获取所有消息。 一种想法是删除完整的聊天,但是刮取效率不高,如果消息数量成千上万,则一次聊天将花费数小时。 另外,这可能会暂时禁止我的IP地址,因为抓取是网站无法支持的。 在学习网页抓取时,我已经有过暂时禁止Reddit的经历,我不想再经历一次。
然后,我想起了Facebook提供的用户数据档案,我试过试一试。 幸运的是,当我提取该zip时,我发现了一个html页面,其中包含与每个人和每个小组列出的所有聊天记录,直到请求数据之前。 每个名称都是一个html页面,可以与该用户进行完整的聊天。 每个html的代码都已精简,因此必须对其进行分析以分析其中的内容。 在最小化html时,很明显,每个chat的html文件中的代码都是通用格式,每个消息都在div中,类为“ message”。 消息div具有发件人的姓名,消息时间戳和消息,每个消息都包含在单独的span标记中。 发件人的名称位于类用户的跨度中,时间戳位于类类meta的跨度中,并且消息内容位于段落“ p”标签中。

chat.html中包含所需数据的代码块

步骤1:提取消息日期

现在,我已经以html格式与我进行了完整的聊天,只需将其废弃即可获取数据。 我使用漂亮的汤来获取每个消息的时间戳,并将该数据转储到csv文件“ chatdata.csv”中。 仅在有大量消息的情况下,此过程才需要4-5秒,否则几乎是即时的。 到目前为止,csv处于非常糟糕的状态,具有冗余值,即同一时间戳有多个行。

提取和导出消息日期。

步骤2:计算给定日期的邮件

下一个任务是计算一天中发送的邮件数。 我用熊猫库来做到这一点。 数据框是完整的csv。 我使用groupby函数根据特定日期对行进行分组。 完成此步骤后,我将发送邮件的所有日期和当天发送的邮件计数导出到csv“ count.csv”。 剩下的唯一步骤是按升序对日期进行排序,以便以有序方式绘制图形。

步骤3:对数据进行排序

通过使用pandas库中的sort_values函数,我按日期的升序对上一步中的count.csv进行了排序。 时间戳记最初包含日期和时间,格式为Sunday,April 8,2018 at 12:02pm UTC+5:30 。 因此,在创建“ chatdata.csv”时,我仅从时间戳中提取了日期,而在创建最终的sorted.csv时,则使用了熊猫库中的to_date函数将日期转换为YYYY-MM-DD格式。 “ sorted.csv”是数据文件,具有给定日期按日期升序排列的邮件数。 剩下的最后一项任务是在图形上绘制这两列。

对消息日期进行计数和排序

最后一步:绘制图形并运行脚本。

为了绘制数据,我使用了matlplotlib库。 我将日期保留在x轴上,将当天的邮件计数保留在y轴上。

创建数据集并绘制图形的主要功能

现在是时候对python脚本进行测试运行了,瞧! 屏幕上有输出。 在不同的聊天中测试脚本并比较其中的图表很有趣。

样本输出图

完整脚本的源代码可以在GitHub上找到。

该代码是在很短的时间内编写的,因此变量命名和创建3个文件的代码都很糟糕。 我相信可以将生成的文件数减少到1或2,并且通过合并更多功能可以使完整代码更好。 同样,由于需要较小的空间和较大的日期长度,包含日期的x轴会变得混乱。 该脚本当前只绘制发送或接收消息的日子的计数,没有一天没有发送或接收消息的日子的计数,即一天中有0条消息,如果这些日子也能容纳的话,则绘制会更好。 欢迎对代码做出任何贡献。

关于我

我叫Anupam Dagar。 我是阿拉哈巴德印度信息技术学院(印度政府人力资源开发部设立的信息技术卓越中心)的本科生,攻读我的信息技术学士学位。

当我没有大学作业的开销时,我喜欢创造和学习新事物。 我喜欢用python编写代码,最近开始开始使用javascript框架。

您可以在TwitterGitHub上关注我。

翻译自: https://hackernoon.com/analysing-your-facebook-messenger-chat-a099b0c69652

facebook

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值