1. 程式人生 > 實用技巧 >帶你探究Python爬蟲小功能| Email提醒功能

帶你探究Python爬蟲小功能| Email提醒功能

本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯絡我們以作處理

以下文章來源於騰訊雲 作者:Python進擊者

( 想要學習Python?Python學習交流群:1039649593,滿足你的需求,資料都已經上傳群檔案流,可以自行下載!還有海量最新2020python學習資料。 )


大家可能都知道STMP這個協議,這個協議是用於傳送郵件,很多語言都支援此協議,Python內建也是對SMTP支援的,可以傳送純文字郵件、HTML郵件以及帶附件的郵件。在Python爬蟲的開發中Email有啥用呢?Email主要起的是提醒作用,在我們爬蟲執行的時候可能會遇到異常或者伺服器方面的問題,我們可以通過郵件的形式來及時通知我們,我們再去進行處理。

Python對STMP支援有兩個庫,分別是smtplib和email。email庫主要是負責構造郵件,smptlib庫負責傳送郵件。

我們可以把Email提醒功能封裝起來,我們需要的時候直接呼叫即可,這樣慢慢的也可以形成我們自己的一個爬蟲系統模組。

我們現在具體來講解一下,首先我們需要兩個郵箱,一個用於發郵件,一個用於接收郵件,我這裡用的分別是163郵箱和QQ郵箱.

首先最重要的一步,就是開啟STMP功能。


上面兩張圖分別是163郵箱和QQ郵箱的STMP功能開通介面(必須要開啟此功能)

我們將其封裝好的程式碼如下:

class SendMail(object):
def __init__(self,username,passwd,recv,title,content, file=None, email_host='smtp.163.com',port=25): self.username = username self.passwd = passwd self.recv = recv self.title = title self.content = content self.file = file self.email_host = email_host self.port = port
def send_mail(self): msg = MIMEMultipart() #傳送內容的物件 if self.file:#處理附件的 att = MIMEText(open(self.file).read()) att["Content-Type"] = 'application/octet-stream' att["Content-Disposition"] = 'attachment; filename="%s"'%self.file msg.attach(att) msg.attach(MIMEText(self.content))#郵件正文的內容 msg['Subject'] = self.title # 郵件主題 msg['From'] = self.username # 傳送者賬號 msg['To'] = self.recv # 接收者賬號列表 self.smtp = smtplib.SMTP(self.email_host,port=self.port) #傳送郵件伺服器的物件 self.smtp.login(self.username,self.passwd) try: self.smtp.sendmail(self.username,self.recv,msg.as_string()) except Exception as e: print('出錯了',e) else: print('傳送成功!') def __del__(self): self.smtp.quit() # 呼叫封裝 if __name__ == '__main__': m = SendMail( username='[email protected]',passwd='XXX',recv='[email protected]', title='JAVAandPython君',content='這裡可以改成異常的輸出',file='JAVA.txt' ) m.send_mail()

上面43行程式碼就可以完美解決,因為最近專案裡面也用到了這一塊的知識,所以特意分享給大家,本人覺得還是比較實用的!