python爬虫之基金信息存储
作者:??斜月???? 发布时间:2021-12-25 03:20:04
1 前言
前面已经讲了很多次要进行数据存储,终于在上一篇中完成了数据库的设计,在这一篇就开始数据的存储操作,在数据存储的这个部分,会将之前抓取到的基金列表,基金基本信息和基金变动信息以及ETF信息进行存储。
2 信息存储
2.1 基金基本信息存储
在这里获取基金信息包括两个部分,一部分是场外基金另外一部分是场外基金信息。之在前的文章中,我们已经获完成了场外基金和ETF基金信息的代码,因此在这里我们仅仅需要存储数据库即可,那么有个问题,基金的信息是随时发生变更的或者更新的。在保存时需要先判断基金代码是否已经存在,如果存在则更新,如果不存在则新增,但是这样效率有点低,这时候就用到之前的文章内容,使用这样 on duplicate key update
的语句就可以一条sql搞定了。
举例如下所示:
INSERT INTO `tb_fund_list`(`code`, `name`, `fund_type`) VALUES ('000363','国泰聚信价值优势混合C','混合型-灵活')
on duplicate key update `code` = '000363', `name` = '国泰聚信价值优势混合C' ,`fund_type` = '混合型-灵活';
如果存在000363基金的话,我们就进行更新操作,如果不存在那么久插入数据。
具体实现的代码如下图所示:
2.2 基金变动信息获取
基金的变动信息不论是场内基金还是场外基金都是一样的获取方式,在这里就可以使用通用的逻辑进行处理了,就是之前抓取基金变动信息和基金价格信息的方式。
3 需要改进的地方
3.1 基金类型
现在基金基本信息中的基金类型还是中文,这样的中文存储起来不符合常用的编码规范,之前没有处理是因为还不知道有多少种基金的类型,现在已经获取到了所有的基金,这个时候我们需要查询一下所有的基金类型,然后建立枚举来表述不同的基金类型。
# 获取所有的基金类型信息
select distinct fund_type from tb_fund_list;
根据查询出来的基金类型,最终定义的基金类型如下图所示:
fund_type_dic = {
"QDII": "1",
"商品(不含QDII)": "2",
"股票型": "3",
"指数型-股票": "4",
"混合型-偏债": "51",
"混合型-偏股": "52",
"混合型-平衡": "53",
"混合型-灵活": "61",
"债券型-中短债": "62",
"债券型-可转债": "63",
"债券型-混合债": "64",
"债券型-长债": "65"
}
根据经验来说,债券型的基金相对比较多,如果对债券基金感兴趣的
可以时常更新数据,在后续的操作中以非债券型基金为主进行分析,数据总量相对较小,批量更新的时间也相对较短。
3.2 基金的更新顺序
在之前的基金获取过程中,总体来讲获取的顺序是混乱的,在最终的数据结果存储时,需要将获取的信息基金拼接和组装。最终的更新数据顺序为:
1 更新场外基金列表(新增或者更新)
2 更新ETF信息列表(新增或者更新)
3 查询基金的基本信息进行更新操作
4 查询基金的阶段变动信息进行更新
4 总结
获取基金的信息已经完毕,已经把基金信息保存成功,在下一章中将介绍如何建立线性模型去评估基金的分数,为投资基金做出定量分析。
来源:https://juejin.cn/post/7033601558663299109


猜你喜欢
- 一、mysqldump 简介mysqldump 是 MySQL 自带的逻辑备份工具。它的备份原理是通过协议连接到 MySQL 数据库,将需要
- 简介Python 中有个序列化过程叫作 pickle,它能够实现任意对象与文本之间的相互转化,也可以实现任意对象与二进制之间的相互转化。也就
- python 里面与时间有关的模块主要是 time 和 datetime如果想获取系统当前时间戳:time.time(),是一个float型
- 前言这篇博客将了解什么是特征,角点,哈里斯角点检测(Harris Corner Detection)的概念。并使用cv2.cornerHar
- pygame介绍Python Pygame 是一款专门为开发和设计 2D 电子游戏而生的软件包,它支 Windows、Linux、Mac O
- 在给客户做个程序时,突然遇到个问题,就是产品页用户提交视频播放文件时,如何根据提交的网址内的视频格式进行正确的播放呢....郁闷了一会,想好
- 昨天,系统管理员告诉我,我们一个内部应用数据库所在的磁盘空间不足了。我注意到数据库事件日志文件XXX_Data.ldf文件已经增长到了3GB
- 本文实例为大家分享了python实现五子棋游戏的具体代码,供大家参考,具体内容如下一、运行截图:二、代码# 用数组定义一个棋盘,棋盘大小为
- 学习器在测试集上的误差我们通常称作“泛化误差”。要想得到“泛化误差”首先得将数据集划分为训练集和测试集。那么怎么划分呢?常用的方法有两种,k
- 小编使用python中的django框架来完成!1,首先用pycharm创建django项目并配置相关环境这里小编默认项目都会创建setti
- 全文检索引擎入门灰常不幸的是,关系型数据库对全文检索的支持没有被标准化。不同的数据库通过它们自己的方式来实现全文检索,而且SQL
- 原则, 以datetime为中心, 起点或中转, 转化为目标对象, 涵盖了大多数业务场景中需要的日期转换处理步骤:1. 掌握几种对象及其关系
- 插入: oEditor.FCKSelection.GetSelectedElement(); oEditor.FCK.InsertHtml(
- 利用over(),将统计信息计算出来,然后直接筛选结果集declare @t table(ProductID int,ProductName
- 前言: 在数据库运维过程中,我们时常会关注数据库的链接情况,比如总共有多少链接、有多少活跃链接、有没有执行时间过长的链接等。数据库
- 目录1 标准化2 归一化3 正则化4 离散化5 白化 机器
- 最近研究微信API,发现个非常好用的python库:wxpy。wxpy基于itchat,使用了 Web 微信的通讯协议,实现了微信登录、收发
- 字符串去除数字间的逗号在西文数字的表示中,很多格式是类似这样:123,456,789。如果得到这样的一个字符串,直接用int转换成整型肯定报
- 1. 从字典创建Dataframe>>> import pandas as pd>>> dict1 =
- 方法一:def commaSpiltList(self, listData): listData = list(listData) strs