Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从电子邮件收件箱中提取URL_Python_Email_Url_Extract - Fatal编程技术网

Python 从电子邮件收件箱中提取URL

Python 从电子邮件收件箱中提取URL,python,email,url,extract,Python,Email,Url,Extract,好的,在我试图做的事情中出现了一些混乱,所以我再次这样做。我想写一个脚本来运行对我的收件箱,将给我从地址,主题,和电子邮件正文中的URL。我遇到的问题是,脚本的URL解析从电子邮件中提取所有URL,而不仅仅是从正文中提取URL。这里有一个例子 致:Tom@mail.com 发件人:Joe@test.com 主题:确认你的考试成绩 请转到以下URL确认您的考试分数。WWW.test.com/confirmation 再次感谢您的投入 签名 乔 (Joes签名的一部分有图像) 图像的URL为 我希

好的,在我试图做的事情中出现了一些混乱,所以我再次这样做。我想写一个脚本来运行对我的收件箱,将给我从地址,主题,和电子邮件正文中的URL。我遇到的问题是,脚本的URL解析从电子邮件中提取所有URL,而不仅仅是从正文中提取URL。这里有一个例子

致:Tom@mail.com

发件人:Joe@test.com

主题:确认你的考试成绩

请转到以下URL确认您的考试分数。WWW.test.com/confirmation 再次感谢您的投入

签名

乔 (Joes签名的一部分有图像) 图像的URL为

我希望我的输出是

发件人:Joe@test.com

主题:确认你的考试成绩

网址:WWW.test.com/confirmation

我得到了这个

发件人:Joe@test.com

主题:确认你的考试成绩

网址:WWW.test.com/confirmation

这是我的剧本

import re
import mailbox
import urlparse

mbx=mailbox.mbox("Mail Box Path")

url_pattern = re.compile('''["']http://[^+]*?['"]''')

for k, m in mbx.iteritems():
    print "From %s\n" % m['from']
    print "Subject %s\n" % m['subject']
    print "URL %s\n" % url_pattern.findall(m.as_string())

签名是电子邮件的主体,所以你不能真正地将它们分开

如果你确定你关心的邮件中只有一个链接,你可以试着只查看你匹配的第一个URL——但是没有一种(可靠的)方法来确保你只与邮件正文进行交互,而不与签名进行交互


-这非常困难,尤其是当你无法控制你正在处理的电子邮件的格式时。

签名是电子邮件的主体,因此你无法真正将它们分开

如果你确定你关心的邮件中只有一个链接,你可以试着只查看你匹配的第一个URL——但是没有一种(可靠的)方法来确保你只与邮件正文进行交互,而不与签名进行交互

-这非常困难,尤其是当您无法控制正在处理的电子邮件的格式时。

是否
m.as\u string()
返回HTML文本?如果是,您可以使用BeautifulSoup,lxml.html来提取链接。
m.as\u string()
是否返回html文本?如果需要,您可以使用BeautifulSoup、lxml.html来提取链接。