【D28】模组化#3:取得市场行情资料

前言

股票每日交易资讯、三大法人资料(区分期货与选择权二类-依日期)模组化後,也把加权指数行情用get_and_save取资料并且汇入资料库中吧。

本日程序码使用:market_info.py

将会改写:


制作module: daily_market_info

这边只有制作一个class「daily_market_info」,但是其中包含从API取得资料,以及下载好的档案取得资料。

  • 区分来源

要从网路,还是档案取得资料的关键是「来源」,这边制作了urlpath两个参数在get_and_save()功能中,让我们方便带入使用。

path没有资料,表示是使用url的方式,也就是从网路取得资料,url的位置可以指定,也可以使用预设值。如果path有资料,就以这个为优先,但是没有预设值。

所以在get_and_save()要辨别资料是否齐全,没有的话直接从网路来。

if url:
    print("=资料从网路来(非预设)=")
    r = self._get_csv_data(url)
else:
    if path:  # 代表是从档案来的
        print("=资料从档案来=")
        r = self._get_csv_data(path=path)
    else:
        print("=资料从网路来=")
        r = self._get_csv_data()

最後取资料的时候,就要实作,因此要判断到底是走网路API,还是直接解档案:

if path is None:
    if url:
        self.url = url

    csv = requests.get(self.url)  # 从网路取得CSV档案
    df = pandas.read_csv(StringIO(csv.text))  # 有header
else:
    # 从CSV档取得资料,且编码为big-5
    df = pandas.read_csv(path, encoding="big5")

测试

测试时,分成URL API取资料,另一个是直接给路径

  • URL
csv_data = daily_market_info()
r = csv_data.get_and_save()
if r:
    print("success")
else:
    print("False")
  • Path
csv_data = daily_market_info()
csv_path = os.path.join(os.path.dirname(__file__), "每日市场成交资讯_202101.csv")
r = csv_data.get_and_save(path=csv_path)
if r:
    print("success")
else:
    print("False")

後记

本来预计要做到讯号灯的模组化,结果还是取资料,看来只能明天把讯号灯模组化吧!


<<:  Day 13 Section Summary

>>:  [Day 23] Leetcode 494. Target Sum (C++)

改善R^2 (1) | ML#Day24

如同「决定系数篇」所介绍,R^2的数字越趋近於1,模型能够解释的能力越强,那麽我们就是追寻更好的R^...

【Day10】AddInvitationFragment(下) X DatePickerDialog

接下上集!!,我们已经完成layout,还有上传照片了。那麽接下来我们要做的就是把选取时间的日历叫...

各种电脑常见的问题与维修方法

我们常常帮客户维修电脑,因此收集了许多客户常会遇见的电脑故障问题,包含那些 电脑维修 零件有问题,以...

【Day 19】 实作 - 透过 AWS 服务 Glue Job 调整 Partition 以及档案格式

昨天我们已经透过 AWS Glue Crawler 自动建立 VPC Log 资料表,并且我们也看到...

DAY14 - firestore 使用条件来进阶查询

上一篇介绍 firestore CRUD 的各种方式,今天要来介绍进阶的查询资料方式,利用条件去过滤...