1. 程式人生 > >Python之Bilibili自動更新郵件提醒並工作列圖示「完整程式碼」

Python之Bilibili自動更新郵件提醒並工作列圖示「完整程式碼」

前言

本次分享的是小編經過多日編寫的關於自動檢測B站Up主視訊更新情況,併發送郵件提醒更新的Python程式,程式碼不專業、部分程式碼段借鑑網上,僅供參考娛樂!

用到的庫

selenium、
_thread、
sys、
time、
re、
os、
bs4、
win32gui/win32con/win32api/winerror、
smtlib、
email、

Python之Bilibili自動更新郵件提醒並工作列圖示「完整程式碼」

灰色的表示沒用到

環境及編譯器

Python3.6

PyCharm

效果圖

Python之Bilibili自動更新郵件提醒並工作列圖示「完整程式碼」

本來想做一個GUI,介面做好了,但跟程式連線部分還沒搞定:

Python之Bilibili自動更新郵件提醒並工作列圖示「完整程式碼」

正式開始

一、開啟網頁

為了簡便,使用Python自動化測試工具 -- selenium,Selenium測試直接執行在瀏覽器中,就像真正的使用者在操作一樣。支援的瀏覽器包括IE、Mozilla Firefox、Mozilla Suite等,小編使用的是火狐。當然,如果不想看到瀏覽器,還可以使用“phantomjs”,這需要去官網下載exe檔案(windows使用者)。這兩個怎麼用不是本文重點,大家可以自行搜尋。

以phantomjs為例,啟動瀏覽器:

driver = webdriver.PhantomJS()

開啟網頁:

driver.get(geturl)

然後通過bs4解析頁面:

Soup = BeautifulSoup(driver.page_source,'lxml')

通過F12分析B站頁面,並確定搜尋規則:

Python之Bilibili自動更新郵件提醒並工作列圖示「完整程式碼」

隨便選的

參考參考小編的程式碼吧:

Python之Bilibili自動更新郵件提醒並工作列圖示「完整程式碼」

二、郵箱傳送

大部分郵箱對於第三方使用,都要求有授權碼來代替密碼,以QQ郵箱為例(來自百度經驗):

1.登入電腦版QQ郵箱,選擇最上方的“設定”

Python之Bilibili自動更新郵件提醒並工作列圖示「完整程式碼」

2.選擇“賬戶”,切換到賬戶詳情頁面。

Python之Bilibili自動更新郵件提醒並工作列圖示「完整程式碼」

3.在賬戶頁面往下拉,可以看到pop3設定,選擇“開啟”。

Python之Bilibili自動更新郵件提醒並工作列圖示「完整程式碼」

4.按照彈出的視窗提示操作進行密保驗證。有多種方式可以驗證,比如手機令牌等。推薦使用簡訊驗證。

5.按照簡訊驗證的提示傳送簡訊。傳送成功後直接點選“我已傳送”。

6.彈出的提示中直接顯示16位的授權碼,可以複製下來,或者是記下來,千萬不要記錯了。然後點選“確定”。

7.下方的收取選項一般是預設30天的,點選下拉箭頭,選擇“全部”,並點選頁面最下方的儲存更改。千萬別忘了點選儲存,不然之前做的都白費了。

Python之Bilibili自動更新郵件提醒並工作列圖示「完整程式碼」

然後就可以套用模板編寫程式碼了:

Python之Bilibili自動更新郵件提醒並工作列圖示「完整程式碼」

三、建立工作列圖示

左擊圖示隱藏介面,右擊圖示恢復視窗,左雙擊圖示退出程式

此部分程式碼量較大,呼叫了win32官方demo,僅供參考:

Python之Bilibili自動更新郵件提醒並工作列圖示「完整程式碼」

Python之Bilibili自動更新郵件提醒並工作列圖示「完整程式碼」

Python之Bilibili自動更新郵件提醒並工作列圖示「完整程式碼」

Python之Bilibili自動更新郵件提醒並工作列圖示「完整程式碼」

Python之Bilibili自動更新郵件提醒並工作列圖示「完整程式碼」

四、多執行緒

工作列顯示圖示和查詢程式相當於是兩個獨立的部分,通過一條線連線起來。也就是說,執行查詢,圖示就會卡死、執行圖示,查詢就會暫停——所以需要用到多執行緒。Python3.6有_thread和threading模組,本程式用的是簡單的_thread,並且沒優化(小編邊學邊做邊發稿,沒看全呢、),有興趣的可以優化一下噻~~

五、主函式部分

Python之Bilibili自動更新郵件提醒並工作列圖示「完整程式碼」

Python之Bilibili自動更新郵件提醒並工作列圖示「完整程式碼」

Python之Bilibili自動更新郵件提醒並工作列圖示「完整程式碼」

六、打包為exe

使用pyinstaller進行打包,注意如果要將exe分享給夥伴們,記得將phantomjs也放在同一資料夾下,再壓縮包發出去。如何使用pyinstaller進行打包,可以參考小編之前發過的文章,可進入小編主頁查詢。

結語