1. 程式人生 > >女朋友的情緒難以捉摸,作為程式設計師我應該?

女朋友的情緒難以捉摸,作為程式設計師我應該?

文章釋出於公號【數智物語】 (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~