搭建自己的金融数据源和量化分析平台(七):定时更新上市公司所属行业门类及大类

本文主要是介绍搭建自己的金融数据源和量化分析平台(七):定时更新上市公司所属行业门类及大类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0x00 前言

由于此前从深交所下载的股票信息中只有行业门类信息,没有行业大类信息,导致后续解析三大报表和量化选股的时候无法进行:
在这里插入图片描述
可以看到深交所的股票是没有大类信息的。
再看看上交所的保险股:
在这里插入图片描述
因此需要将深交所股票的所属大类信息也添加上。
这里可以直接使用中国上市公司协会每隔一段时间发布的《上市公司行业分类结果》。
目前最新版本是《2023年下半年上市公司行业分类结果》
在这里插入图片描述
具体的解析逻辑不再赘述,分析一下HTML的格式就能把最新的pdf拿到手来解析。
直接上爬虫代码:

import osimport pdfplumber
import requests
from lxml import etree'''中国上市公司协会的爬虫,读取和解析最新上市公司行业分类结果 返回格式为:股票代码:[一级行业代码,二级行业代码]。举例如下
{"stock_code1":[industry,industry_2],"stock_code2":[industry,industry_2]
}
'''
def get_A_industry_list():basic_url = 'https://www.capco.org.cn/pub/zgssgsxh/xhgg/hyfl/hyfljg/index.html'mid_url = 'https://www.capco.org.cn/pub/zgssgsxh/xhgg/hyfl/hyfljg/'cache_file_path = "./corporation_category.pdf"response = requests.get(basic_url)response.encoding = 'UTF-8'href_cut = etree.HTML(response.text).xpath(".//div[@class='fr listCon']/h3/a")response.close()href_mid = etree.tostring(element_or_tree=href_cut[0], encoding='utf-8').decode('utf-8')latest_result = href_mid.split("<a href=\"")[1].split("\">")[0].split("./")[1]response = requests.get(mid_url+latest_result)response.encoding = 'UTF-8'href_cut = etree.HTML(response.text).xpath(".//a[@style='font-size:12px; color:#0066cc;']")response.close()pdf_url_mid = etree.tostring(element_or_tree=href_cut[0], encoding='utf-8').decode('utf-8')pdf_url = pdf_url_mid.split("href=\"")[1].split("\" title=\"")[0]response = requests.get(pdf_url)open(cache_file_path, "wb").write(response.content)response.close()result = {}with pdfplumber.open(cache_file_path) as pdf:for page in pdf.pages:tables = page.extract_tables()for table in tables:for line in table:if line[0].find("上市公司") < 0:result[line[0]] = [line[2], line[2]+line[6]]os.remove(cache_file_path)return result

然后控制器那边这样写:

# 更新上市公司所属行业门类及大类
def update_A_corporation_category():database = "stock_a"select_sql = "SELECT stock_code,industry,industry_2 FROM stock_list"update_sql = "update stock_list set industry=%s,industry_2=%s where stock_code=%s"update_rows = []category = get_A_industry_list()select_result = ExecSelect(database, select_sql)  # 读取查询结果for stock in select_result:if stock[2] is None:try:update_rows.append((category[stock[0]][0], category[stock[0]][1], stock[0]))except KeyError:print(stock[0], "暂无大类分类结果")continue# 更新数据库中存在的股票信息if len(update_rows) > 0:result = ExecInsert(database, update_sql, update_rows)if result == 'success':print("更新上市公司行业分类成功.")else:raise CustomException("更新上市公司行业分类时发生数据库异常:" + result)print("上市公司行业分类更新结束.")

然后深交所的行业就可以补齐了:
在这里插入图片描述

这篇关于搭建自己的金融数据源和量化分析平台(七):定时更新上市公司所属行业门类及大类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1101609

相关文章

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

Python极速搭建局域网文件共享服务器完整指南

《Python极速搭建局域网文件共享服务器完整指南》在办公室或家庭局域网中快速共享文件时,许多人会选择第三方工具或云存储服务,但这些方案往往存在隐私泄露风险或需要复杂配置,下面我们就来看看如何使用Py... 目录一、android基础版:HTTP文件共享的魔法命令1. 一行代码启动HTTP服务器2. 关键参

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

Linux之platform平台设备驱动详解

《Linux之platform平台设备驱动详解》Linux设备驱动模型中,Platform总线作为虚拟总线统一管理无物理总线依赖的嵌入式设备,通过platform_driver和platform_de... 目录platform驱动注册platform设备注册设备树Platform驱动和设备的关系总结在 l

Olingo分析和实践之EDM 辅助序列化器详解(最佳实践)

《Olingo分析和实践之EDM辅助序列化器详解(最佳实践)》EDM辅助序列化器是ApacheOlingoOData框架中无需完整EDM模型的智能序列化工具,通过运行时类型推断实现灵活数据转换,适用... 目录概念与定义什么是 EDM 辅助序列化器?核心概念设计目标核心特点1. EDM 信息可选2. 智能类