复习一下昨天的进度 - 我们取得单月的个股日成交价的资料,并在电脑中储存成csv档。
目前都只有单月的个股日成交价,但如果想要一整年的个股日成交价时,该怎麽办呢?
可惜的是,台湾证券交易所并没有提供一整年的个股日成交价API,不过没关系,既然没有一整年的,我们自己将某一年1月到12月的资料合并起来不就是一整年了吗?
第一步就来观察API的参数,不过在那之前,我先推荐一个测试API时很方便的工具 - Postman。
Postman是一套专门在测试API的软件,输入API的URL和参数後送出,就会回传API的资料回来,并帮你整理成比较好看的样子,除了GET之外,也有POST等其他方法可以使用,堪称测试API的神器!
Postman目前有网页版跟电脑版,偶尔测试的话网页版就够用了,但如果想要更进阶的功能,可能就要考虑载电脑版。我这次先用网页版做示范。
</>
」的符号,点击後下拉式选单选择「Python-Requests」,就帮你产生这段程序码出来了,连一点点的code都不用自己写XD经过测试後,我们发现月份是由「date」这个参数所决定的,因此如果想要一口气抓下从1月到12月的股市资料,程序码就长这样:
# 从1到12月
for m in range(1, 13):
url = "https://www.twse.com.tw/exchangeReport/STOCK_DAY?response=json&date=2020{0:02d}01&stockNo=0050".format(m)
print(url)
# 取得股票资料json字串
response = requests.get(url, headers=headers)
# print(response.text)
# 从json字串转为python的字典格式
json_data = json.loads(response.text)
datas = json_data["data"]
fields = json_data["fields"]
我抓2020年一整年的股市资料。为了满足API的格式要求,我用{0:02d}
搭配.format(m)
,作用是固定长度为2,不够补0,比方说1就会变01。
接着,将每个月的资料存成Pandas的DataFrame型态。
# 存成Pandas的Dataframe
month_df = pd.DataFrame(datas, columns=fields)
然後,将每个月的DataFrame合并成一个整年的DataFrame。ignore_index=True
让合并後资料的index是连续的。
# 合并於整年的Dataframe
year_df = year_df.append(month_df, ignore_index=True)
最後只要把整年的DataFrame储存成.csv
档就完成了!
# 转成csv档
year_df.to_csv("./year_stock.csv", encoding="big5")
结果:
回顾一下今天教的内容,首先介绍了测试API的神器 - Postman,以及简单的操作教学,再来利用Postman测试股市API,找出参数上的规律,最後利用这个规律一口气把整年的股市资料给抓下来。
明天就是这个专案的最後一天,将利用这两天得到的资料绘制成趋势图! 大家千万别错过明天的内容哦!??
如果喜欢这系列文章麻烦帮我按Like加订阅,你的支持是我创作最大的动力~
本系列文章以及范例程序码都同步更新在GitHub上,後续会持续的更新,如果喜欢也麻烦帮我按个星星吧~
有任何问题或建议,都欢迎在底下留言区提出,还请大家多多指教。
<<: Domain layer implementation
React的更新任务主要是调用壹个叫做workLoop的工作循环去构建workInProgress树...
https://leetcode.com/problems/longest-palindromic...
聊了许多TensorFlow,不能不讲到TensorBoard啦!TensorBoard是Tenso...
前一篇说到 该怎麽写 data 的资料,找回双向绑定机制 !!! 这边先小小的补充一下 XD 在 O...
随着敌人越来越复杂、新威胁频繁出现且越来越普遍,一定要能快速完成以下工作: -评估新威胁的影响 -检...