服務器端定時執行程序,用以實現自動查詢指定股票信息,併發送到指定郵箱的功能。
import mail
import requests #使用requests包
import json #導入json模塊
import time #導入時間模塊
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
def get_content_list():
# 以下是某個新聞網站的行情api,返回json格式數據
data = requests.get("https://forexdata.wallstreetcn.com/real?en_prod_code=XAGUSD,AUTD,XAUUSD,USOIL,US10YEAR,GBPUSD,EURUSD,USDJPY,USDCNH,USDOLLARINDEX,UK100INDEX,FRA40INDEX,GER30INDEX,000001,HKG33INDEX,JPN225INDEX&fields=prod_name,update_time,last_px,px_change,px_change_rate,price_precision")
#解析數據,獲取需要的內容
injson = json.loads(data.text)['data']['snapshot']
#自己需要的行情代碼列表
codelist = "XAGUSD,AUTD,XAUUSD,USOIL,US10YEAR,GBPUSD,EURUSD,USDJPY,USDCNH,USDOLLARINDEX,UK100INDEX,FRA40INDEX,GER30INDEX,000001,HKG33INDEX,JPN225INDEX"
codelistar = codelist.split(',') #個人需要分割成list格式
codelistar.reverse()#反轉順序
print( " 更新時間 "+"\t"+" 品種列表"+"\t"+"漲跌幅度"+"\t"+"報價") #輸出標題
for name in codelistar:
timestr = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(injson[name][1]))
data=(timestr +"\t"+injson[name][0]+"\t"+str(injson[name][4])+" \t"+str(injson[name][2]))
print(data)
send(data)
#最後輸出打印出來
def send(content='nothing', toUser='[email protected]'):
sender = '[email protected]' # 發件人郵箱賬號
num = '***************' # 發件人郵箱密碼(當時申請smtp給的授權碼)
msg = MIMEText('來自我的Python!', 'plain', 'utf-8')
msg['From'] = formataddr([content, sender])
msg['To'] = formataddr(['to you', 'you'])
msg['Subject'] = 'from my server'
try:
server = smtplib.SMTP_SSL('smtp.qq.com', 465)
# server.set_debuglevel(1)
server.login(sender, num)
server.sendmail(sender, [toUser], msg.as_string())
server.quit()
print("successfuly")
return 1
except Exception:
print("send failed")
return 0
get_content_list()
效果圖