python获取股票数据并播报,利用datetime和win32com模块
- #!/usr/bin/env python
- # coding=utf-8
- # 获取股票数据并播报
-
- import requests,re
- import win32com.client
- import datetime
-
- class Check():
- def __init__(self):
- self.speaker = win32com.client.Dispatch("SAPI.SpVOice")
- self.headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.62 Safari/537.36"}
- # url = 'http://hq.sinajs.cn/?format=text&list=sh603616,sz002024'
- hanjian_url = 'http://hq.sinajs.cn/list=s_sh603616' # 韩建河山
- suning_url = 'http://hq.sinajs.cn/list=s_sz002024' # 苏宁易购
- # url = 'http://finance.sina.com.cn/realstock/company/sh603616/nc.shtml?from=BaiduAladin'
- self.url_list = [hanjian_url,suning_url]
- # 当前的时间分钟数减去7分钟然后再减去46秒后得出的时间
- # (datetime.datetime.now()-datetime.timedelta(minutes=7)-datetime.timedelta(seconds=46)).strftime('%H:%M:%S')
- # 处理时间
- def nowtime(self):
- # time_url = 'http://www.beijing-time.org/'
- time_url = 'http://time.beijing-time.org/time.asp'
- response = requests.get(time_url, headers=self.headers)
- time_html = response.text
- time_list = time_html.split(";")
- patt = re.compile(r"\d+")
- year = patt.findall(time_list[1])[0]
- month = patt.findall(time_list[2])[0]
- day = patt.findall(time_list[3])[0]
- hour = patt.findall(time_list[5])[0]
- minute = patt.findall(time_list[6])[0]
- sec = patt.findall(time_list[7])[0]
- # 获取北京标准时间
- # self.now_time = "%s:%s:%s" % (hour, minute, sec)
- self.now_time = "%s-%s-%s %s:%s:%s" % (year,month,day,hour, minute, sec)
- # 将字符串格式的日期时间转换成日期格式方便比较
- result_now_time = datetime.datetime.strptime(self.now_time, "%Y-%m-%d %H:%M:%S")
- # 当天的11:30:00时间转换成日期格式
- eleven_half_time = "%s-%s-%s 11:30:00" %(year,month,day)
- result_eleven_half_time = datetime.datetime.strptime(eleven_half_time, "%Y-%m-%d %H:%M:%S")
- # 当天的13点时间转换成日期格式
- thirteen_time = "%s-%s-%s 13:00:00" %(year,month,day)
- result_thirteen_time = datetime.datetime.strptime(thirteen_time, "%Y-%m-%d %H:%M:%S")
- # 当天的15点时间转换成日期格式
- fifteen_time = "%s-%s-%s 15:00:00" %(year,month,day)
- result_fifteen_time = datetime.datetime.strptime(fifteen_time, "%Y-%m-%d %H:%M:%S")
- # print(result_thirteen_time <result_now_time<result_fifteen_time)
- self.check(result_now_time,result_eleven_half_time,result_thirteen_time,result_fifteen_time)
- # 处理check
- def check(self,result_now_time,result_eleven_half_time,result_thirteen_time,result_fifteen_time):
- while True:
- # 如果现在时间小于11点半或者在13点和15点之间运行
- if result_now_time < result_eleven_half_time or result_thirteen_time <result_now_time<result_fifteen_time:
- print("======================")
- for url in self.url_list:
- response = requests.get(url,headers=self.headers)
- html = response.text
- # 名称
- name = html.split('"')[1].split(",")[0]
- # 价格
- price = float(html.split('"')[1].split(",")[1])
- print(name,price)
- self.speaker.Speak(name) # 播报名字
- self.speaker.Speak(price) # 播报价格
- else:
- break
-
- if __name__ == "__main__":
- ch = Check()
- ch.nowtime()