如果Python爬蟲發生了故障,希望第一時間來通知自己,這個時候可以通過email來向自己報告。
發送郵件的協議是SMTP,Python內置對SMTP支持,可以發送純文本郵件,html郵件,以及帶附件的郵件,Python對SMTP的支持有smtplib和email兩個模塊,emial負責構造郵件,smtplib負責發送郵件。
這裡我是用163郵箱來發送郵件的,開啟SMTP功能,採用163的電子郵件服務器smtp.163.com
構造純文本郵件
<code># msg = MIMEText('Python爬蟲運行異常,異常信息為遇到HTTP 403', 'plain', 'utf-8')/<code>
MIMEText對象需要3個參數。
- 郵件正文,
- MIME的類型,plain表示純文本發送,html,表示網頁發送。
- 設置郵件格式,這裡彩了utf-8保證兼容多種語言。
構造網頁郵件。
<code>msg = MIMEText('hello
異常網頁
', 'html', 'utf-8')
/<code>
完整發郵件代碼
<code># coding:utf-8
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib
def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
# 發件人地址
from_addr = '******@163.com' #這裡換成你的郵件地址
# 郵箱密碼
password = '*******' #這裡換成你的郵箱密碼。
# 收件人地址
to_addr = '******@126.com' #收件人的地址。我這裡採用的是126郵箱,我發現QQ郵箱被拒收了。
# 163網易郵件服務器地址
smtp_server = 'smtp.163.com'
# 設置郵件信息
# msg = MIMEText('Python爬蟲運行異常,異常信息為遇到HTTP 403', 'plain', 'utf-8')
msg = MIMEText('hello
異常網頁
', 'html', 'utf-8')
/<code>
msg['from'] = _format_addr('Python綠色通道' % from_addr)
msg['to'] = _format_addr('Python綠色通道管理員' % to_addr)
msg['subject'] = Header('Python綠色通道爬蟲運行狀態', 'utf-8').encode()
# 發送郵件
server = smtplib.SMTP(smtp_server, 25)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()
看結果圖。
閱讀更多 有趣的程序媛 的文章