我已经编写了登录邮件的代码。我是Python的新手。如何从GMail收件箱中的给定链接(https://nationalskillsregistry.com)获得响应。
import imaplib
import getpass
import email
import datetime
detach_dir = '.' # directory where to save attachments (default: current)
user = "something@gmail.com"
pwd = "password"
subject_filter='(SUBJECT "Daily News ")'
# connecting to the gmail imap server
m = imaplib.IMAP4_SSL("imap.gmail.com")
m.login(user,pwd)
print "logged in successfully..."
m.select()
typ, data = m.search(None, subject_filter)
for num in data[0].split():
rv, data = m.fetch(num, '(RFC822)')
if rv != 'OK':
print "ERROR getting message", num
#return
msg = email.message_from_string(data[0][1])
print msg.get_payload(decode=True)
m.close()
m.logout()
这是我的邮件。
主题:每日新闻 - 宣布
身体:
请注意,如果您进行在线支付,则无需访问任何POS中心。您的帐户将立即续订。 如果您的帐户未立即续订,请等待24小时,然后检查有效期是否已延长。 请不要进行多次在线支付。请访问https://nationalskillsregistry.com。
答案 0 :(得分:0)
您需要执行两个步骤 - 从电子邮件中提取URL,然后在浏览器中打开它。
第1步将是困难的部分。我建议使用正则表达式来尝试解析电子邮件以提取URL。网上有很多资源可以帮助你解决这个问题。我最喜欢测试正则表达式的是RegExr 代码应该非常简单。
import re
...
expr = r'((http)s?:\/\/((\.)?\w+)+(\/\S*)*)'
#Parse with regex: Grabs possible URL (first only). Case insensitive.
matches = re.match( expr, msg, re.I)
url = matches[0]
import webbrowser
...
webbrowser.open(url)
或者,如果您要下载原始HTML:
import urllib2
...
response = urllib2.urlopen(url)
html = response.read()
如果您need to download a file,您可以使用urllib进行提升。
import urllib
...
urllib.urlretrieve ("http://www.example.com/songs/mp3.mp3", "mp3.mp3")
至于那个正则表达式,让我们分解一下:
( (http)s?:\/\/((\.)?\w+)+(\/\S*)* )
首先,请注意它全部在括号中。括号表示它是一个捕获组,因此我们以后可以使用它。
(http)s?
这将查找字符串' http',其可能有也可能没有''跟随它。
:\/\/
这将寻找':' - ' \'是因为' /'需要逃脱。
(\.)?\w+)+ #Grab everything between :// and /
这很有趣。它会查找一段时间(可选),然后是''字符''' - 字母或数字,不是标点符号或空格。
它将重复此次1次或更多次。这样做,它会抓住像
一样的字符串
amazon.com
amazon.co.uk
(\/\S*)*
这将抓取以' /'开头的任意数量的字符串,并且可能包含跟随它们的字词。这就像是
/
/家/
/foo.html?q=bar