《社交网站的数据挖掘与分析》第三章 邮箱:虽然老套却很好用
本章所有内容和程序,与其他章节是独立的,因此可以跳到这章学习。
经过两天的努力,本章所有示例程序测试通过。这一章所有程序不需要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格式。
分享到:
相关推荐
使自动化测试不再老套——灵活自动化测试 软件测试 如果你认为测试自动化仅仅是执行测试,那么你就是在错过一个很大的机会,或者说,你由于失去许多小的机会进而失去一个大的机会。可以这么考虑:不要再把自动化...
赵戈戈:Hacker News从功能和内容本身上来说是个很好的应用,我们最初也是想从开源入手 —— 直接使用,不过HN是甚于Arch实现的,我们对Arch 并不熟悉,所以决定自己写,以便功能扩展。 关于初衷。从产品上讲,要...
如果你认为测试自动化仅仅是执行测试,那么你就是在错过一个很大的机会,或者说,你由于失去许多小的机会进而失去一个大的机会。可以这么考虑:不要再把自动化测试仅仅看成需要使用价格不菲的工具去执行自动化,而...
CoRT 3:交互 第1课:同时考虑双方(EBS)。在辩论中同时考虑两个方面,而不是盲目的支持一方。 第2课:证据:类型。辩论中提出的证据的类型。区分事实和观点。 第3课:证据:价值。训练评定证据的价值。并不是...
———————————————— 版权声明:本文为CSDN博主「项目花园范德彪」的原创文章,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/dearmite/article/details/132252664
序 言 / 重新审问读书的意义第 1 章 / 推动我们的“无形力量”第 2 章 / “相遇”决定人生第 3 章 / 阅读经典的魅力第 4 章 / 持续读书的五个习惯第 5 章 / 十倍增强读书力的技法后 记 / 读书使人成长
温馨提示: 仓库.git文件太大,push太慢,一个老套的解决方案:(这样将克隆只有一个提交历史记录的存储库。因此,您的.git文件夹将更轻) git clone --depth 1 https://github.com/java-aodeng/hope.git目录面试题+...
通过使用认知科学和学习理论的最新研究成果,你将享受一种多感官学习体验,《Head First C#》采用了一种专门为你的大脑而设计的丰富格式娓娓道来,而不是长篇累牍地说教,让你昏昏欲睡。 目录: 引子 1 C#助你快速...
根据需要自动生成 setter 和 getter。 SetterGetter 类只是使用自动创建方法的魔术方法 __call 构建的。 这也称为 PHP 重载。 有关重载的更多信息: : 安装 老套 在您的项目中需要src/SetterGetter.php 。 作曲家...
【Huan】_整修一台10年的老套裝機,差點慘決人Huan...
存储库,其中包含一些经典数据集中不同开箱即用的机器学习算法之间的比较。 目录 这个概念 这个名字是一个很老套的概念的玩笑:尝试在数据集中尝试不同的经典算法以进行实验,看看每个算法的行为。 这是尝试回答...
温馨提示:仓库.git文件太大,push太慢,一个老套的解决方案:(这样将克隆只有一个提交历史记录的存储库。因此,您的.git文件夹将更轻) git clone --depth 1 https://github.com/java-aodeng/hope.git | | || ...
第一篇机器人总动员观后感:机器人总动员观后感 《机器人总动员》观后感1篇 昨天,我和妈妈一起看了一部动画片电影,名字叫《机器人总动员》,这部影片讲的是主人公瓦力和伊芙拯救地球环境问题的故事,它给我的感触很...
今天是情人节,在hh4742的建议下,他和美女Yoyo_Yao抛弃了那些老套的情人节项目,玩起了hh4742淘宝得来的红豆玲珑骰。 红豆玲珑骰一共六面,每一面上有+、-、*其中之一的符号。每当骰子落下后,hh4742的两条卷轴就...
目录: I C#助你快速开发: 10分钟(甚至更短时间)内轻松搞定可视化应用I . 2 都只是代码:幕后的故事43 ...C#实验室3: 入侵者 附录i 其他 详细巨录 引子 363 385 439 483 515 563 621 653 681 703
刚到新单位,学习他们的源代码,代码里读写系统配置文件的XML代码比较老套,直接写在一个系统配置类里,没有进行类的拆分,造成类很庞大,同时,操作XML的读写操作都是使用SetAttribute和node.Attribute(name)方法,...
2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于...
马斯洛的心理学理论谈到人的需求的五个层次——生存的需求(这是家长需要提供给孩子的,要让他们吃饱穿暖,让他们能生存下去),安全的需求(这需要学校、家庭、社会共同努力提供给孩子的),爱的需求(这是基于生理...