刚刚接触Python的小白,想做一个脚本从邮箱中提取邮件。然后分析邮件内容,因为我的邮箱绑定了一个Stork网站,定期发送一批文章,所以我想把这些东西导入一个表格,以便于以后的统计。
我的思路是这样,首先
1.链接邮箱;
2.读取邮件内容;
3.分析邮件内容;
4.将提取结果存入csv 。
开始用了imap,结果给出的提示是:
“NO Select Unsafe Login. Please contact kefu@188.com for help”
当然这是网易邮箱对客户安全的保护,imap可以实现对邮箱的操作,在非安全登录模式下,网易不允许实现这种操作(也可能是我没学到imap的用法)。于是乎开始验证自己的密保问题,发现这个时候记不住的东西太多,索性就不再验证密保。然后更换了pop3 。不得不说,pop3这个简单的协议读取email信息还是挺高效 的。
下面介绍我的代码:
首先我的邮箱内容是这个样子为了简单我把其他邮件都删了,所以只有两条信息。
也就是说我只有个邮件。共有13条记录可以提取。
首先链接邮箱。登录邮箱所用到的库函数是poplib ,这是一个较为简答的库,具体内容大家可以上Python官方文档上面搜索。我所用的到也比较简单: server = poplib.POP3('pop.***.com')。此句与服务器建立链接,使用sever.user('user')和server.pass_('')登录服务器,与邮箱建立链接。然后用numofmsg = len(m.list()[1])求出收件箱内的邮件数目。建立一个循环,使用lines = m.retr(*+1)[1]获取邮件内容输出为一个‘Message’类型的对象。使用Parser().parsestr('\r\n'.join(*))对 'Message'进行重构,
maintype = msg.get_content_maintype()
if maintype == 'multipart':
for part in msg.get_payload():
if part.get_content_maintype() == 'text':
mail_content = part.get_payload(decode=True).strip()
elif maintype == 'text':
mail_content = e.get_payload(decode=True).strip()
print(mail_content)
对邮件文本的解码是件比较头疼的事查了好多资料才查到上面一段代码,直接输出邮件文本内容,可以直接存入txt文档,也可直接进行分析。我是存入txt再从txt中提取文本,进行分析的。为什么这样做,因为留存个副本,看看要分析的内容怎么去分析。
对文本的分析比较简单,但是是一件繁琐的工作,不断地建立循环,利用段落和字符的特性去构造函数与别的段落进行区分这里正则表达式和re模块会起到很大的作用,这里不再赘诉。
网友评论