Python - 从电子邮件中提取URL

时间:2018-04-04 15:07:35

标签: python email extraction

我已经坚持了几天,并且不知道使用哪个模块。我想要设置的是一个python脚本,您只需输入电子邮件的路径作为参数,然后脚本将提取邮件中的所有URL。我曾尝试使用电子邮件,email.parser等模块,但似乎没有什么能做我需要的。我还有点新的python,所以阅读文档有点令人困惑。任何指导或建议将不胜感激。我可以使用正则表达式或其他搜索URL的方法,只需知道如何显示邮件正文。提前谢谢!

3 个答案:

答案 0 :(得分:2)

如果您已经完成了获取电子邮件的工作并将其作为python中的字符串,请尝试this regex

import re

email = '<email text here> Maybe I have a URL like http://cnn.com or maybe it is something more complex like https://stackoverflow.com/questions/49654499/python-extract-urls-from-email-messages'
# email = "http://cnn.com"
regex = 'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'

match = re.findall(regex, email)

for m in match:
    print(m)

输出:

$ python3 email.py 
http://cnn.com
https://stackoverflow.com/questions/49654499/python-extract-urls-from-email-messages

答案 1 :(得分:0)

简单的正则表达式声明:

import re

def get_url (email):
    return re.search(r'\@.+',email).group(0)[1:]

应该返回电子邮件地址来自的域名。

答案 2 :(得分:0)

这样的东西就足够了:

import re

def get_urls(message): ## message is a string

    (1) Use a regex to find all substrings beginning
        with 'http' and ending in whitespace
    (2) Return these.  This may contain more strings than
        you want, so you will need to manually inspect them.

如果您尝试解决该解决方案,我会发布更具体的代码。这足以让您开始自己的实现。