pandas、pyecharts绘制基金走势图-04

  1. 使用logging,记录程序执行过程,打印出对应的日志信息。
  2. 使用schedule,将程序实现定时执行的效果

控制台打印的信息:
在这里插入图片描述

# -*- coding:UTF-8 -*-

"""
 @ProjectName  :PvgameT
 @FileName     :fund_data.py
 @Description:  
 @Time         :2021/2/26
 @Author       :Qredsun
 @Author_email :1410672725@qq.com  
 """
import logging
import requests
import schedule
import pandas as pd
from datetime import datetime
from dataclasses import make_dataclass

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s')

def apiData(fundcode = 320007):
    logging.info(f'请求最新基金估值数据, 基金代码{fundcode}')

    headers ={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" }

    url = f'http://fundgz.1234567.com.cn/js/{fundcode}.js'
    res = requests.get(url, headers = headers)
    logging.debug(f'get fund data from api {url}')

    if res.status_code == 200 :
        data = res.json()['gszzl']
    else:
        data = res.text
    logging.debug(f'fund data {data}')

    return data

def saveCsv(fundcodes = ['160629'],count = 1):
    logging.info('保存数据到csv文件')
    time_ = datetime.now().strftime("%Y/%m/%d")
    FundData = make_dataclass('FundData', [('datetime', str),('fundcode', int), ('name', str), ('gszzl', float)])
    FundDataList = []
    for fundcode in fundcodes :
        s = apiData(fundcode)
        FundDataList.append(FundData(time_, fundcode, s['name'], s['gszzl']))

    data_DataFrame = pd.DataFrame(FundDataList)
    if count == 0:
        logging.debug('第一次写文件,保存列名')
        data_DataFrame.to_csv(f'funddatas{datetime.now().strftime("%Y%m%d")}.csv', mode='a+', index=False)
    else:
        logging.debug('不是第一次写文件,不保存列表')
        data_DataFrame.to_csv(f'funddatas{datetime.now().strftime("%Y%m%d")}.csv', mode='a+', index=False, header=False)
    # print(data_DataFrame)
    return f'funddatas{datetime.now().strftime("%Y%m%d")}.csv'


def fundTask():
    logging.info('每日定时任务')
    fundcodes = ['320007','005063','161122']
    file_name = saveCsv(fundcodes = fundcodes,count = 0)


if __name__ == '__main__':
	# 每天14:45,调用fundTask()方法
    schedule.every().day.at("14:45").do(fundTask)

    while True:
        schedule.run_pending()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值