python获取股票数据并播报,利用datetime和win32com模块

版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/z564359805/article/details/85762374
#!/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()

猜你喜欢

转载自blog.csdn.net/z564359805/article/details/85762374
今日推荐