如果是从上一篇来的读者可能会很奇怪,不是说要用爬虫抓三大法人资料吗?怎麽换标题了,而且连题目的「爬虫」都砍掉了?
聪明的你一定猜到了,没错,我撞题了,准确来说已经撞两年了,有人很早以前就把爬虫程序做出来了,还已经打包成API,甚至连官网都有了。
我也想知道为什麽我已经找了三天资料却没看到这东西......
当下我的心情是这样的
然而30分後我...
荣恩,这东西比爬虫甚至Yahoo的资料库还全阿,让我们来看看这东西该怎麽使用吧!
我是不是每次都忘记附程序码
在大数据的时代,资料是一切的基础。我们收集超过 50 种台股相关资料,并提供下载、线上分析、回测。
照着官方文件,API主要参数有
import requests
import pandas as pd
from datetime import date, timedelta
url = "https://api.finmindtrade.com/api/v4/data"
parameter = {
"dataset": "TaiwanStockInstitutionalInvestorsBuySell",
"start_date": (date.today()-timedelta(days=30)).strftime("%Y-%m-%d"),
"end_date": date.today().strftime("%Y-%m-%d"), # Not working
"data_id": "2330",
"token": "", # 参考登入,获取金钥
}
data = requests.get(url, params=parameter)
data = data.json()
data解码过後资料会长成这样
{'msg': 'success', 'status': 200, 'data': [{'date': '2021-08-10', 'stock_id': '2330'}]}
其中msg、status代表是否有成功取得资料,data代表回传的资料,资料会是一个Python的List,所以我们可以用Pandas去转成表格。
data = pd.DataFrame(data['data'])
data.head()
上一小节是单笔股票的资料取法,但如果我们今天要取得多笔资料呢?比如现在如果是要取得ETF的50种股票法人资料呢?
实作上其实很简单,只要将资料转成DataFrame後,通通存到List里,最後在串接起来即可,这里有非常详细的各种表格串接教学。
frames = []
for id in etf50_id:
url = "https://api.finmindtrade.com/api/v4/data"
parameter = {
"dataset": "TaiwanStockInstitutionalInvestorsBuySell",
"start_date": date.today().strftime("%Y-%m-%d"),
"data_id": id,
"token": "", # 参考登入,获取金钥
}
data = requests.get(url, params=parameter)
data = data.json()
df = pd.DataFrame(data["data"])
frames.append(df)
result_df = pd.concat(frames)
result_df = result_df.reset_index(drop=True)
result_df
注意这里有个新手常犯的错误,表格是在最後才合并,常常有新手的程序会长这样
for id in etf50_id:
url = "https://api.finmindtrade.com/api/v4/data"
parameter = {
"dataset": "TaiwanStockInstitutionalInvestorsBuySell",
"start_date": date.today().strftime("%Y-%m-%d"),
"data_id": id,
"token": "", # 参考登入,获取金钥
}
data = requests.get(url, params=parameter)
data = data.json()
df = pd.DataFrame(data["data"])
result_df = pd.concat([result_df,frames])
没错,这样省了3行,但代价是每次串接都要复制一次整个表格,现在只有50列可能不明显,以後如果有500万笔资料直接卡死你。
一轮摸索下来,目前看起来台湾证券交易所有的资料它都有,连新闻这种对深度学习会用到的资料也有额外蒐集,虽然有部份API有锁会员限定,但基本上都能用合并资料方法获得,当然如果你懒也可以付149月费直接拿,在此感谢作者的贡献,让我们省去原本要和证券交易所Ban人机制斗智斗勇的过程。
也顺便报废了原本要发的,写了3小时的草稿和程序,所以今天内容比较少请见谅D
我们前面已经了解了事件绑定与事件冒泡了,但是使用 物件元素.绑定事件 有不方便的地方 只能同时为一...
那些具有使用API经验的人将听说过并熟悉无处不在的API测试和开发工具。但是,Nutanix De...
之前就有做过这件事情 当时搞定了之後想说,简单吗~~~就是搞个Dockerfile而已 结果好一阵子...
当我们布署完Microsoft Defender for Endpoint 接下来当侦测到威胁时,系...
是菜稽还是老稽,大部份可以看他们稽核的顺序来辨别, 有一阵子观察五年以上的资深前辈,会从内稽、管审开...