《社交网站的数据挖掘与分析》第三章 邮箱:虽然老套却很好用
本章所有内容和程序,与其他章节是独立的,因此可以跳到这章学习。
经过两天的努力,本章所有示例程序测试通过。这一章所有程序不需要VPN等越墙工具。本书作者是一个超级牛人,正因为是超级牛人,所以不屑于介绍如何一步一步的实践操作和运行程序。据我观察,作者主要在Mac OS上编写和测试程序,虽然他已经尽量照顾我们这些Windows环境的读者。和第一、二章一样,部分程序在Windows环境下运行时存在Bug,需要进行修改才能很好的运行。
操作前提:Windows系统+Python 2.7(Windows下建议安装ActivePython2.7)
虽然现在Python3.2已经出来,但是因为Python3.X与2.X不兼容,本书所有程序编写于Python2.X环境
Linux或者Mac OS系统不是必须的,但是如果拥有其中一种,多少是有好处的,可以在虚拟机中安装之
感谢阅读了那么多废话,现在开始介绍上机实践操作指南。
第1节 mbox:Unix的入门级邮箱
本节有4个示例,其中3个是文件格式介绍或者输出结果,涉及两个示例程序,其中第二个没有展示,但却很重要。
首先别被Unix吓到,mbox邮件格式不是什么稀奇玩意,在Windows上也可以很方便地操作和使用。它与Windows上广泛存在的eml电子邮件格式只有两个区别。先介绍一下eml邮件格式吧,当然最好是先看一个示例。本文附件1里面test文件夹下有3封eml格式邮件。注册一个163邮箱,给这个邮箱发一封邮件,进入邮箱打开邮件,在右上方有一个“更多”按钮,点击它,选择“导出邮件”,就可以获得一封eml格式电子邮件了。
我们要分析和挖掘邮箱里的邮件,如果不知道邮件的存储格式,那肯定是笑话。用记事本或者Word打开eml文件进行观察,我们需要关注几个字段:From、To、Subject和邮件正文,当然也可以顺便关注一下IP地址还有抄送和密送字段(不是每封邮件都有的)。邮件中很多内容是base64编码的,使用Python的base64模块用两条语句就可以完成编码和解码。如果想看base64编码后的内容,百度“base64”,有在线的工具。
下面介绍mbox格式和eml格式有什么区别,区别有两个:一是每个eml文件只存储一封电子邮件,而一个mbox文件可以存储n封电子邮件;二是mbox中每封邮件有一个开头,这个开头必须是这种格式“From mailsender Thu Jun 10 08:50:02 2012”。先是From关键字,然后是发送者,然后是发送时间。mbox中两份电子邮件用两个空行来分割。
注意:本书所有源代码可以从https://github.com/ptwobrussell/Mining-the-social-web这个网址下载。
注意:本节的测试邮件集可以从下面网址下载:http://zaffra.com/static/matthew/enron.mbox.json.gz和http://zaffra.com/static/matthew/enron.mbox.gz
说说enron测试邮件集,这是一个国际上公开的用于分析海量邮件的数据集,由4万多封邮件组成。
本书大部分代码基于这个邮件集,当然我们希望分析自己或者别人的邮箱邮件,完全不用担心。
学完本章,就可以分析自己或者他人的海量邮件。有兴趣者可搜索下enron以了解这个邮件集的背景。
首先来看本节的第二个示例程序,这个示例程序将某文件夹下所有eml格式的邮件转换为mbox格式。
本节的第一个示例程序把mbox格式的邮件转换为json格式。json是一种数据格式,花3分钟学下吧。
第二个示例程序在本书中文版的第53页文字中,程序名为mailboxes__convert_enron_inbox_to_mbox.py
这个程序原本的功能是将enron邮件集中inbox目录下的邮件转换为mbox格式,有两个bug
一个bug是程序中的\r 需要改为\n ,第二bug是在生成_From字段时,如果_From格式有空格,转换会失败
请下载本文的附件1,里面有修改后的源代码和非常详细的程序说明,估计详细到让你觉得烦,觉得烦就删掉一些注释
第一个示例程序在运行上没有bug,但是在功能上有点欠缺。它将一个mbox格式的文件转换为json格式,
然后在命令行输出。我在程序的最后添加了几行代码,把输出的内容写入一个文件。具体程序,请看附件吧。
第一个实例程序的文件名为mailboxes__jsonify_mbox.py
第1节小结:本节内容主要介绍邮件存储的两种格式,以及如何转换。本章后面内容都基于enron邮件集。
英文版里有这个邮件集的下载地址,但是中文版缺失了。我在上面已经给出下载地址。第一个网址给出了
转换后的json格式,第二个网址是转换前的mbox格式。
第1节学习建议:去自己的邮箱搞几封eml格式的邮件,然后运行本节的两个程序进行格式转换。如果我们以后
要分析自己或他人的邮件集,这是很重要的第一步。可以使用软件自动下载邮箱里的所有邮件,比如foxmail。
本章的最后作者介绍如何使用一个python程序下载邮箱里面的所有邮件,可以将邮件保存为mbox或eml格式。
本篇介绍社交网站数据挖掘中邮件格式转换的方法,包括eml到mbox及mbox到json的转换过程,并提供了实践操作指南。

3633

被折叠的 条评论
为什么被折叠?



