【问题标题】:Extracting URL from email inbox从电子邮件收件箱中提取 URL
【发布时间】:2012-08-14 20:53:27
【问题描述】:

好的,我正在尝试做的事情有些混乱,所以我再次这样做。我正在寻找针对我的收件箱运行的脚本,它将在电子邮件正文中为我提供发件人地址、主题和 URL。我遇到的问题是脚本的 URL 解析正在从电子邮件中提取所有 URL,而不仅仅是从正文中提取。这是一个例子

收件人:Tom@mail.com

发件人:Joe@test.com

主题:确认你的考试成绩

请访问以下网址以确认您的考试成绩。 WWW.test.com/confirmation 再次感谢您的意见。

签名

乔 (乔斯签名部分有图) 图片的网址是 http://www.test.com/wp-content/uploads/_client_image/66-dcfc0fc8.png

我希望我的输出是

发件人:Joe@test.com

主题:确认你的考试成绩

网址:WWW.test.com/confirmation

我得到了这个

发件人:Joe@test.com

主题:确认你的考试成绩

网址:WWW.test.com/confirmation,http://www.test.com/wp-content/uploads/_client_image/66-dcfc0fc8.png

这是我的脚本

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())

【问题讨论】:

  • m.as_string() 是否返回 HTML 文本?如果是,您可以使用 BeautifulSoup、lxml.html 来提取链接。

标签: python email url extract


【解决方案1】:

签名算作电子邮件的正文 - 因此您无法真正将它们分开。

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

Someone even wrote a paper on this - 这非常困难,尤其是当您无法控制所处理电子邮件的格式时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 2022-08-20
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多