女朋友的情緒難以捉摸,作爲程序員我應該?

文章發佈於公號【數智物語】 ID:decision_engine),關注公號不錯過每一篇乾貨。


轉自 |數據團學社(微信搜索metrodata_xuexi 即可關注)



本文約1200字,閱讀需要4分鐘

關鍵詞:阿里雲 Python  郵件 星座

本文講述了使用和部署簡單雲服務器的方法,可以用Python實現以郵件方式獲取每日星座運勢。



最近遇到了一件難事:我發現女友突然愛上了“十二星座”,每天翻看各種星座運勢,逮着人就要給人算命,神神叨叨的,心情也同樣如天上的星星那般,難以捉摸。



這可怎麼辦呢?爲了摸清其規律,對症下藥,挽回我即將逝去的愛情,我搜索“星座運勢”,得到這個東東:



這可真是好東西!可是星座運勢每天都不一樣,如果能像日報那樣每天獲取到推送就太好了!

我決定使用當今最前沿的互聯網雲服務,實現自動算命功能,以科學的手段拯救愛情。



獲取星座信息,選定算命網站


女友的星座?嗯…我記得好像是白羊或者金牛或者雙子…或者摩羯或者水瓶或者雙魚。算了算了~這個不重要,隨機吧!



排名第8的星座:天蠍座。應該就是它了!


然後,我瀏覽各大算命網站,發現大家算出來的結果都是一個版本,那也隨機選一個吧!



這是一款星座運勢查詢API,具體如何使用API,請參考這篇:感謝百度,我再也不用手動抓經緯度了!


主要步驟就是訪問API——獲取星座json數據,十分簡單。

貼上代碼:


import smtplib    
from email.mime.multipart import MIMEMultipart    
from email.mime.text import MIMEText    
from email.mime.image import MIMEImage 
from email.header import Header   
import requests
import time

#構建調用API函數
def run():
    url = 'https://api.shenjian.io/constellation/today?appid=74a1d223b7f5105634f6e0c3341bea82'  
    params = {'constellation':'天蠍座'}
    data = requests.get(url,params=params).json()
    constellation = data['data']['constellation']
    fate = data['data']['fate']
    total = data['data']['fate_data'][0]['name']
    total_score = data['data']['fate_data'][0]['value']
    love = data['data']['fate_data'][1]['name']
    love_score = data['data']['fate_data'][1]['value']
    work = data['data']['fate_data'][2]['name']
    work_score = data['data']['fate_data'][2]['value']
    fortune = data['data']['fate_data'][3]['name']
    fortune_score = data['data']['fate_data'][3]['value']
    lucky_color = data['data']['lucky_object'][1]
    lucky_num = data['data']['lucky_object'][2]
    health = data['data']['lucky_object'][3]
    analysis = data['data']['analysis']

    #對API返回的數據構建郵件文本內容
    content = '''{}
    星座:{}
    {}:{}
    {}:{}
    {}:{}
    {}:{}
    {}
    {}
    {}
    運勢分析:
    {}
    '''
.format(fate,constellation,total,total_score,love,love_score,work,work_score,
    fortune,fortune_score,lucky_color,lucky_num,health,analysis)



用腳本獲取自動反饋


第二步,我需要把查詢到的結果,每天自動反饋給我,比如通過短信或者郵件。

這裏選擇郵件,因爲發短信要錢,郵件不要錢。


首先,註冊一個郵箱,這裏推薦163郵箱。獲得SMTP服務器地址。



然後編寫郵件發送自動發送腳本,腳本內容爲通過API獲取的星座運勢。然後設置定時發送時間,比如每天早上8點。這裏爲了快速驗證腳本,簡單設置了間隔60秒發送一次。


1、設置郵件發送任務


#下面的發件人,收件人是用於郵件傳輸的。
smtpserver = 'smtp.163.com' #郵件服務器
username = '[email protected]' #郵箱
password='XXXXXX' #郵箱密碼
sender='[email protected]' #發件人郵箱
receiver='[email protected]' #收件人郵箱
#收件人爲多個收件人
#receiver=['[email protected]','[email protected]']


subject = '星座運勢' #郵件名稱
#通過Header對象編碼文本,如果出現中文亂碼情況,請使用
#subject = '中文標題'
#subject=Header(subject, 'utf-8').encode()


2、構造郵件對象


#構造郵件對象
#下面的主題,發件人,收件人,日期是顯示在郵件頁面上的。
msg = MIMEMultipart('mixed'
msg['Subject'] = subject
msg['From'] = '[email protected] <[email protected]>'
msg['To'] = '[email protected]'
#收件人爲多個收件人,通過join將列表轉換爲以;爲間隔的字符串
#msg['To'] = ";".join(receiver) 
#msg['Date']='2018-9-23'


3、構造文字內容


text = content #傳入文本  
text_plain = MIMEText(text,'plain''utf-8')    
msg.attach(text_plain)   


4、發送郵件


smtp = smtplib.SMTP()    
smtp.connect('smtp.163.com')
#用set_debuglevel(1)可以打印出和SMTP服務器交互的所有信息。
print(smtp.set_debuglevel(1))  
smtp.login(username, password)    
smtp.sendmail(sender, receiver, msg.as_string())    
smtp.quit()


5、構建定時任務


def main(): #構建定時任務
    while 1 :
        run()
        time.sleep(60)#設置腳本運行的時間間隔


到此,簡單的算命腳本就弄好了。不過接下來面臨一個問題,家中電腦不可能24小時待命運行腳本,我需要一臺永不停止的電腦。



獲取一臺“永不停止的電腦”


阿里雲瞭解一下。

阿里雲可以搭建雲站點,進行雲計算,運行雲爬蟲……當然也可以用來雲算命!


首先,進入阿里雲官網,使用您的淘寶賬號登陸



購買雲服務器ECS,找最便宜的就好



選擇服務器配置,配最便宜的就行,鏡像從鏡像市場找一個python運行環境



然後下單,只要15.4!挺便宜的。




使用阿里雲


我們進入管理控制檯,查看實例,已經在運行中了:



1)先重置服務器密碼,然後進行遠程連接。這裏會自動生成一個遠程連接密碼,記下來,不要忘了



2)輸入賬號和密碼,登陸服務器

賬號:root,密碼:就是剛纔設置密碼時的那個。



3)下面和平時使用cmd安裝python包一樣,我們安裝一些會使用到的庫:



4)下載一個FileZilla,用來上傳腳本至服務器:



5)主機填IP地址(在阿里雲控制檯,實例詳情頁)。賬號密碼和剛纔一樣,端口填22



6)進入之後,新建一個文件夾,把腳本拖進去



7)爲了使用方便,我們可以再下載一個叫putty用於訪問服務器,進行操作



填入IP和端口,然後點擊OPEN,後面和在頁面上進行遠程管理操作完全一樣~


比如,我們可以進入python環境,運行一些代碼:



這裏,先CD到腳本所在目錄,然後,鍵入後臺運行腳本命令。



然後腳本將會不間斷自動運行。

(備註:郵件服務請使用阿里雲自己的郵箱服務器和解決方案,否則可能會發生不給發郵件的情況)


好了,讓我們查看一下郵箱:



點開一封郵件,是這樣的:



看!結果一目瞭然,這樣我就可以有針對性的哄女友開心了!

比如,上面寫到,今天是一個適合學習和積累的日子。我果斷爲女友入手一套數據分析師(Python)課程,我覺得她一定會取消今天和我共進晚餐的計劃,好好學習! 



附註:

本文純屬虛構,如有雷同,節哀順變。

這裏主要是想講一下如何使用和部署簡單的雲服務器。我們可以在雲服務器上自動運行一些腳本,比如時間花費較長的爬蟲腳本,或者數據量極大的運算邏輯。然後,甚至我們可以搭建簡易的站點,實現自己的API接口,比如可以嘗試一下搭建一個POI查詢服務API~



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