当前位置: 首页 > news >正文

7.搭建个人金融数据库之快速获取股票列表和基本信息!

前边我们提过,免费的数据一般来自于爬虫,获取难度和维护成本都比较高,其实不太适合小白用户。所以非必要情况下,我们尽量不用这种方式来获取数据。
在这里插入图片描述

我自己用的比较多的是tushare,一般来说有它也就够了,大概500块钱就可以开通绝大多数常用的权限,很多时候我懒得自己写爬虫,实在是因为花费那么多时间去写脚本和维护,这些时间成本都远远不止500块了。

我们做量化,应该把最多的精力放到投研上,其他环节怎么方便、稳定怎么来。当然,有些数据可能tushare没有或者更新不及时,那么我们用爬虫来抓一下也是有必要的。

今天我们的目标是写一个脚本,把A股的股票列表和基本信息拿到,写入到我们的数据库中,然后再配置一个每天更新的定时任务。

一、获取股票基本信息

从交易所用爬虫抓取数据会比较麻烦,所以这里我们用tushare提供的数据接口来获取股票的基本信息。从下图可以看到,这里提供的信息已经是比较全了。

考虑我们是维护一个本地数据库长期来用,所以我们最好还是把所有字段都抓取下来。另外为了避免在回测时出现问题,我们把历史退市的股票也加进来。

如果你是第一次使用tushare,那么可以像我这样写代码。

然后我们打印出来看下数据情况。

可以看到,一共有5637行数据,有些公司在部分字段存在缺失,不过都被我们填充为空字符串了,不会影响我们往数据库里写入。

二、基本探查

首先我们可以看到A股历史上有286家退市股,目前仍有5351家公司在正常上市状态。

然后我们看到这里把所有仍在上市的公司划分到了111个行业中,其中公司数量最多的五个行业分别是电气设备、元器件、软件服务、专用机械和化工原料。

上市公司数量排名前五的省级地区分别是浙江、江苏、北京、广东和上海。南北差异可以说是极大了。

沪深主板股票数量最多,达到3173家,之后是创业板、科创板和北交所。

深交所股票2833家,上交所股票2266家,北交所252家。

有1434家股票是深港通标的,1342家股票是沪港通标的。

有2806家公司没有标识企业类型。除此之外,1459家民营企业占大头,地方国企594家其次。外资企业有194家,央企有125家。

三、创建数据表

我们连接上在前边几节课中创建好的MySQL实例,然后在命令行中执行如下语句,把数据表创建好。

这里我先创建了一个数据库叫stock_a,然后又在这个数据库下边创建了一张表叫ts_a_stock_list,用来存储我们刚才获取到的数据。

这里老Q用的是自己搭建的DBGate工具来执行SQL,大家也可以选择自己喜欢的工具,比如官方提供的MySQL WorkBench、Navicat等,也可以直接在命令行中执行。如果有不懂的朋友,可以留言或者私信咨询老Q。

实际上,我们在Python中也可以执行这个语句,但是为了不给大家引入新的困难,我们先不讲这个方式。

四、写入数据

这里我们要编写两个函数,分别用于获取MySQL连接对象以及向MySQL中写入数据。如果没有特殊要求,就用老Q的代码就行,只需要根据你的实际情况调整下MySQL的访问IP、端口以及用户和密码。

写函数之前我们记得先把用到的库给导入进来。

然后我们执行下述代码:

可以看到如下输出,这就代表写入成功了。

打开我们的数据库管理工具,也能看到的确有数据了,好了,第一次写入就搞定了,是不是还挺简单的?

五、写数据更新脚本

首先我们创建一个文件夹,起名叫tushare_data,用来存储所有我们获取tushare数据的脚本。

然后我们把刚才编写的get_mysql_con和write_to_db两个函数写入一个名为tools.py的文件中,这样以后我们就可以直接导入它来使用了,不需要每次都复制粘贴。然后我们再创建一个新的函数get_ts_api,用来获取token。

接下来我们在同一个目录下创建一个新的文件夹,起名叫stock_a,用来存储A股相关的数据脚本,然后在这个目录中创建一个Python文件,起名ts_a_stock_list.py,和我们的表名保持一致,这样未来会比较好管理。

然后我们在这个文件中写入如下代码,记得把数据库相关信息像上边一样结合自己实际情况调整。

六、配置定时任务

这里我以青龙面板为例,如果你的系统是Windows,可以参考上一节课的内容来配置。

我们按照如下顺序,把刚才提到的文件夹和脚本都创建好。

这里右上角有一些按钮,比如创建文件夹或脚本、编辑脚本等。我们把脚本创建完成后,点击调试。

点击运行,可以看到右侧的执行日志中打印出来了我们想要的结果,这代表我们的脚本执行成功了。点击退出回到上一个界面。

我们在首页点击定时任务,点击右上角创建任务,然后按照下图进行配置。我这里是指定了每周一到周五的晚上10点执行这个脚本来更新数据。

好了,我们已经成功获取了A股股票列表和基本信息数据并且存储到了数据库中,还配置了定时任务来定期更新。是不是没大家想象的那么复杂?

跟着老Q,我们一步步打开量化世界的大门!

相关文章:

7.搭建个人金融数据库之快速获取股票列表和基本信息!

前边我们提过,免费的数据一般来自于爬虫,获取难度和维护成本都比较高,其实不太适合小白用户。所以非必要情况下,我们尽量不用这种方式来获取数据。 我自己用的比较多的是tushare,一般来说有它也就够了,大…...

Nginx基础详解1(单体部署与集群部署、负载均衡、正反代理、nginx安装)

本阶段的任务 1.学会集群的操作概念 2.完成对Nginx的入门操作 3.使用Nginx实现集群和负载均衡 4.使用Nginx实现高可用的方案 目录 1.单体部署与集群部署 1.1单体部署的概念 1.2单体部署的优缺点 1.3集群部署的概念 1.4集群部署的优缺点 1.5集群部署需要注意的点 1.…...

等保一体机如何帮你应对网络攻击

等保一体机如何帮你应对网络攻击 在当今信息化时代,网络安全已成为企业和组织面临的重要挑战。随着网络攻击手段的不断升级,传统的安全防护措施已难以应对复杂多变的威胁。等保一体机作为一种集成化的安全防护解决方案,能够有效帮助企业应对…...

CVE-2024-1112 Resource Hacker 缓冲区溢出分析

漏洞简述 CVE-2024-1112 是 Resource Hacker 软件的一个缓冲区溢出漏洞。该漏洞存在于版本 3.6.0.92 中。由于软件在处理命令行中的文件路径时未对文件字符串长度进行限制,过长的字符串参数导致内存被过度写入,从而引发缓冲区溢出。 漏洞复现 构造长度…...

WebGL渲染与创建2D内容

目录 创建画布2D渲染修改顶点着色器光照深度测试混合模式WebGL是一个强大的工具,可以用来在Web浏览器中创建复杂的3D图形。虽然它的设计初衷是为了3D渲染,但也可以用于创建2D内容。通过巧妙地利用几何、投影和纹理,我们可以构建出各种2D图形。 创建画布 首先,我们需要在H…...

ArcGIS Desktop使用入门(三)图层右键工具——拓扑(下篇:地理数据库拓扑)

系列文章目录 ArcGIS Desktop使用入门(一)软件初认识 ArcGIS Desktop使用入门(二)常用工具条——标准工具 ArcGIS Desktop使用入门(二)常用工具条——编辑器 ArcGIS Desktop使用入门(二&#x…...

LeetCode题练习与总结:二叉树的最近公共祖先--236

一、题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也…...

uni-app 多环境配置

前后端分离模式下,不同的环境如开发环境(dev)、测试环境(test)、生产环境(prod)等,不同环境后端数据库、api地址等可能都不同 。 uni-app中只有development和production两个环境 以配…...

【d48】【Java】【力扣】LCR 123. 图书整理 I

思路 方法1:放进list,将list倒置,利用stream,将list改为int类型 方法2:递归:递归通用思路;明确每一层做什么确定返回值确定什么地方接收下层的返回值 每一层:调用下层,然后把自己…...

【MySQL】InnoDB 索引为什么使用B+树而不用跳表?

在MySQL中,为了加速查询,使用B树来构建索引,将查询性能从O(n)优化到O(log n)。虽然跳表同样提供O(log n)的查询效率并且实现相对简单,但B树更适合MySQL的索引使用,原因包括: B树和跳表的区别 B树和跳表的…...

【学习笔记】TLS/SSL握手之Records

TLS / SSL会话是由记录(Records)所组成,有4种records HandshakeAlertChange Cipher SpecApplication DataHandshake和Alert Records被分为子类型(Subtypes): Handshake:Client HelloHandshake&a…...

【MySQL】创建新账号新数据库并授权

在 MySQL 中创建一个名为 new_user 的用户,并设置密码为 new_pass,然后创建一个名为 new_db 的数据库,并将该数据库的所有权限授予 new_user 用户。 登录 MySQL: mysql -u root -p创建用户: CREATE USER new_userlo…...

Nginx反向代理简介,作用及配置;Nginx负载均衡简介,作用及配置;

一,Nginx反向代理 1.1简介 反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的…...

SAP MIGO M7146不支持移动原因

移动类型 Z91 查看配置:Z91 匹配的原因没有921 倒是Z92的原因里面有921 那解决方案有2种,但是要根据具体业务要求来 1、审视一下是否移动原因用错了 ?换一个移动原因 2、确实是这个移动类型 要用到这个移动原因 ,那就在上图 移…...

vue使用PDF.JS踩的坑--部署到服务器上显示pdf.mjs viewer.mjs找不到资源

之前项目使用的pdf.js 是2.15.349版本,最近换了一个4.6.82的版本,在本地上浏览文件运行的好好的,但是发布到服务器(IIS)上打不开文件,控制台提示找不到pdf.mjs viewer.mjs。 之前使用的2.15.349pdf和viewer…...

重型工程车辆数据集

重型工程车辆数据集,内含Bull_dozer(推土机), Dumb_truck(卡车), Excavator(挖掘机), Grader(平地机), Loader(转载机), Mobile_crane&#xff08…...

【Kubernetes】常见面试题汇总(三十三)

目录 85.简述 kube-proxy 的三种工作模式和原理。 特别说明: 题目 1-68 属于【Kubernetes】的常规概念题,即 “ 汇总(一)~(二十二)” 。 题目 69-113 属于【Kubernetes】的生产应用题。 85.简述 kub…...

ubuntu安装无线网卡驱动(非虚拟机版)

本文不是基于虚拟机,是双系统 太夸张了 实验室居然没网线 只有一个师兄留下来的无线网卡 装完了ubuntu结果没网 make都用不了 然后搜了下大概发现是没有预装gcc和make 参考如下 https://zhuanlan.zhihu.com/p/466440088 https://wwsk.lanzouj.com/iAj4t2ao46zc…...

保障电气安全的电气火灾监控系统主要组成有哪些?

电气火灾是什么? 电气火灾一般是指由于电气线路、用电设备、器具以及供配电设备出现故障性释放的热能:如高温、电弧、电火花以及非故障性释放的能量;如电热器具的炽热表面,在具备燃烧条件下引燃本体或其他可燃物而造成的火灾&…...

gitlab集成CI/CD,shell方式部署

目录 1.首先安装好gitlab和gitlab-runner,这两个,看我以往的教程 2.注册新的 Runner 3. 步骤 3.1 Enter the GitLab instance URL (for example, https://gitlab.com/): 3.2 Enter the registration token: 3.3 Enter a description for the runner: 3…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

&#x1f4cc; LRU 缓存机制详解与实现&#xff08;Java版&#xff09; 一、&#x1f4d6; 问题背景 在日常开发中&#xff0c;我们经常会使用 缓存&#xff08;Cache&#xff09; 来提升性能。但由于内存有限&#xff0c;缓存不可能无限增长&#xff0c;于是需要策略决定&am…...