乾貨分享
引言
最近比較忙,但是我又想關注關注微博知乎發生了什麼事,所以寫了一個定時發送郵件的程序告訴我當前天氣和熱搜。
相關文件
相關程序文件:後臺回覆 “熱搜” 獲取。
相關模塊
bs4:解析網頁
urllib:獲取網頁
requests:獲取網頁
smtplib:發送郵件
email:構造郵件
random:生成隨機數
re:正則匹配文本
實現效果
功能實現
爬取信息
這個程序主要由爬蟲部分和自動發郵件部分組成。爬蟲部分就是簡單的獲取—>解析網頁的過程,之所以用到了urllib庫和requests庫是因爲這兩個爬蟲是我之前不同時期分別寫的,沒去做修改,所以兩個庫都有。
爬取的網站包括:
天氣信息:
https://www.tianqi.com/daqing/
微博熱搜:
https://s.weibo.com/top/summary?cate=realtimehot
知乎熱搜:
https://www.zhihu.com/billboard
在開發者模式下查看網頁,確定一下需要的信息所在位置(這裏以微博熱搜爲例)。
可見每條熱搜的全部信息都包含在<tr class>
標籤下,而我們需要的文本信息則在標籤<td class="td-02">
中,使用bs4
庫就可以獲取得到熱搜的文本信息。
其餘幾個網站方法類似,不贅述了。
發送郵件
爲了實現自動發郵件,需要開啓郵箱的STMP服務(一般在設置中打開)。
開啓後要獲取授權碼,作爲登錄郵箱的密碼。
然後找到你使用的郵箱的SMTP服務器的地址,常見的STMP服務器地址如下。
163郵箱:
smtp.163.com SSL端口號:465
126郵箱:
smtp.126.com SSL端口號:25
qq郵箱:
smtp.qq.com SSL端口號:465
準備好需要的信息後,配置一下發件郵箱和接收郵箱。
mail_host = "smtp.163.com" # 這裏以163郵箱爲例
mail_user = "用戶名(郵箱@前的部分)"
mail_pass = "授權碼,不是登陸密碼"
sender = '你的發送郵箱'
message['From'] = "{}".format(sender)
receivers = ['接收郵箱1','接收郵箱2'] # 接收郵箱可以有若干個
message['To'] = ",".join(receivers)
最後配置一下發送內容和主題,send_string
和title
是調用時傳入函數的。
配置好相關信息後,就可以使用smtplib
庫發信了。
定時執行
如果需要手動執行程序才能發送郵件的話,這個程序的意義就不大了,所以需要設置一下,實現定時執行這個程序。右擊此電腦,打開管理窗口。進入如下界面,創建任務。大多數都是常規設置,按照需要設置就可以了。
但是這部分需要說明一下,框1不需要改變,框2寫你的程序的位置,框3寫python.exe的位置。
最後
現在主要存在的問題是電腦關機後,程序無法運行,如果打算解決這個問題,可以設置在樹莓派上定時運行這個程序,關於在樹莓派運行程序的方法,過兩天我會另寫一篇文章。
如果覺得本文還可以,還請各位點個贊。