用Python+requests爬取天氣和熱搜信息並使用smtplib+email自動填寫信息併發送郵件

乾貨分享

乾貨 | Python學習資源整理分享

在這裏插入圖片描述

引言

最近比較忙,但是我又想關注關注微博知乎發生了什麼事,所以寫了一個定時發送郵件的程序告訴我當前天氣和熱搜。

相關文件

相關程序文件:後臺回覆 “熱搜” 獲取。

相關模塊

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_stringtitle是調用時傳入函數的。

配置好相關信息後,就可以使用smtplib庫發信了。

定時執行

如果需要手動執行程序才能發送郵件的話,這個程序的意義就不大了,所以需要設置一下,實現定時執行這個程序。右擊此電腦,打開管理窗口。進入如下界面,創建任務。大多數都是常規設置,按照需要設置就可以了。

但是這部分需要說明一下,框1不需要改變,框2寫你的程序的位置,框3寫python.exe的位置。

最後

現在主要存在的問題是電腦關機後,程序無法運行,如果打算解決這個問題,可以設置在樹莓派上定時運行這個程序,關於在樹莓派運行程序的方法,過兩天我會另寫一篇文章。

如果覺得本文還可以,還請各位點個贊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章