Skip to main content
 首页 » 编程设计

python之如何在 python 中从电子邮件中检索超链接 URL

2024年10月24日30开发

我有以下代码来获取 HTML 电子邮件作为 email.Message 对象,但我不确定如何从这里继续查找给定显示名称的超链接的 url。我已经在有效负载 (0) 中找到了 url。此外,电子邮件是 href=3D,所以如果我只是复制链接并粘贴到浏览器中,它不起作用。

import sys 
import imaplib  
import getpass 
import email 
import datetime 
import email 
 
 
M = imaplib.IMAP4_SSL('imap.gmail.com') 
M.login('email@email.com','password123') 
 
rv,boxes = M.list() 
rv,boxes = M.select('Inbox/Test1') 
 
rv, data = M.search(None, 'ALL') 
typ, msg_data = M.fetch('1', '(RFC822)') 
 
msg = email.message_from_string(msg_data[0][1]) 
 
url_name = 'Click Here' 
html_text = msg.get_payload(0) 

请您参考如下方法:

这将显示消息中的所有 href...可以更新 parseLinks 类以选择他们感兴趣的个人字符串。

import imaplib  
import email 
import quopri 
import HTMLParser 
 
class parseLinks(HTMLParser.HTMLParser): 
    def handle_starttag(self, tag, attrs): 
        global global_futures_fair_value 
        if tag == 'a': 
            for name, value in attrs: 
                if name == 'href': 
                    print name 
                    print value 
 
 
M = imaplib.IMAP4_SSL('imap.gmail.com') 
M.login('email@email.com','password123') 
 
M.select('Inbox/Test1') 
 
rv, data = M.search(None, 'ALL') 
typ, msg_data = M.fetch('1', '(RFC822)') 
 
msg = email.message_from_string(msg_data[0][1]) 
 
url_name = 'Click Here' 
html_text = msg.get_payload(0) 
 
msg = str(msg.get_payload()[0]) 
msg = quopri.decodestring(msg) 
 
linkParser = parseLinks() 
linkParser.feed(msg)