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