【问题标题】:How do I retrieve a hyperlink URL from email within python?如何在 python 中从电子邮件中检索超链接 URL?
【发布时间】:2016-06-15 16:07:40
【问题描述】:

我有以下代码来获取作为 email.Message 对象的 HTML 电子邮件,但我不确定如何从这里继续查找给定显示名称的超链接的 url。我在有效载荷(0)中找到了网址。此外,电子邮件是 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)

【问题讨论】:

    标签: python email url hyperlink imaplib


    【解决方案1】:

    这将在消息中显示所有 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)
    

    【讨论】:

      猜你喜欢
      • 2015-03-01
      • 2020-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-17
      • 2015-03-12
      • 2018-03-25
      相关资源
      最近更新 更多