教你用 Python 快速获取行业板块股,辅助价值投资!

编程获取中国股市行业分类并作图--使用python、tushare、pyecharts实现 中国股市的股票好像是不缺的,林林总总的股票数目已经接近4000只了。4000只股票对一个人来说无疑太多了,我们认识这些股票总要采用分类的方式,选择我们熟悉的行业。哪如何统计获取股市中每个行业的的具体数量呢?今天我们就看一下如何获取股市的行业分类以及每个行业的股票数量,最后将行业和行业对应的股票数量用玫瑰图的形式展现出来。 1.获取行业分类 import pandas as pd import... 阅读详情

d881062d91235f5825dd4d5d78d51585.png

大家好,我是菜鸟哥!

本篇文章,我们来聊聊如何根据「 行业板块 」辅助我们进行价值投资。

# 1. 行业板块

行业板块与概念股在定义上还是有很大区别的。

一般来说,概念板块的风险更大,基于某个消息被短期炒作,很不稳定,因此风险更大

行业板块是按股票行业进行分类,往往注重于长期,稳定性更高。

在实际投资上,短期可以根据按「 市场热点 」从概念股进行选股投资,中长期还是建议按「 行业板块 」选股进行投资。

# 2. 爬取相关板块及个股列表

目标对象:

aHR0cDovL3N1bW1hcnkuanJqLmNvbS5jbi9oeWJrLw==

626a41838bca51fe06d8bbf2c577fd49.png

2-1  板块列表

首先,我们使用 「 Toggle JavaScript 」插件发现页面中的行业板块数据来源于下面的请求结果

http://**/?q=cn|bk|17&n=hqa&c=l&o=pl,d&p=1020&_dc=1650680429759

3f43e3f45854385d010cab4c4e124357.png

其中,参数为 p 和 _dc 为可变参数,p 代表页码数(从 1 开始),_dc 代表 13 位的时间戳,其他查询参数都是固定内容

然后,我们编写代码获取响应数据,使用正则表达式匹配出行业列表的数据

...
self.ps_url = 'http://**/?q=cn|bk|17&n=hqa&c=l&o=pl,d&p={}050&_dc={}'
....
    def __get_timestramp(self):
        """
        获取13位的时间戳
        :return:
        """
        return int(round(time.time() * 1000))
...
    def get_plates_list(self, plate_keyword):
        """
        获取所有板块
        :return:
        """
        plates = []

        index = 0
        while True:
            url = self.ps_url.format(index + 1, self.__get_timestramp())
            # 解析数据
            resp = self.session.get(url, headers=self.headers).text
            match = re.compile(r'HqData:(.*?)};', re.S)
            result = json.loads(re.findall(match, resp)[0].strip().replace("\n", ""))
            if not result:
                break

            # 根据关键字,过滤有效板块
            temp_plate_list = [item for item in result if plate_keyword in item[2]]
            index += 1

            for item in temp_plate_list:
                print(item)

                plates.append({
                    "name": item[2],
                    "plate_path": item[1],
                    "up_or_down": str(item[10]) + "%",
                    "top_stock": item[-6]
                })
        return plates
...

最后,根据关键字对板块进行一次筛选,通过板块名、板块路径 PATH、板块涨跌幅、最大贡献股票名称重新组装成一个列表

注意:通过分析页面发现,根据板块路径 PATH 可以组装成行业板块个股列表页面 URL

比如,行业板块 PATH 为 400128925,那么行业板块对应个股列表的页面 URL 为

http://summary.**/hybk/400128925.shtml

2-2  行业个股列表

爬取行业个股列表和上一步数据展示逻辑一样,个股列表数据同样来源于下面请求的结果

http://**/?q=cn|s|bk{}&c=m&n=hqa&o=pl,d&p={}020&_dc={}

其中,bk 后面对应行业板块 PATH,p 代表页码数,_dc 代表 13 位的时间戳

...
# 个股
self.stock_url = 'http://**/?q=cn|s|bk{}&c=m&n=hqa&o=pl,d&p={}020&_dc={}'
....
    def get_stock_list(self, plate_path):
        """
        获取某一个板块下所有的个股信息
        包含:股票名称、最新价格、涨跌幅、市盈率
        :param plate_info:
        :return:
        """
        index = 0
        stocks = []
        while True:
            url = self.stock_url.format(plate_path, index + 1, self.__get_timestramp())
            resp = self.session.get(url, headers=self.headers).text
            match = re.compile(r'HqData:(.*?)};', re.S)
            result = json.loads(re.findall(match, resp)[0].strip().replace("\n", ""))
            if not result:
                break
            index += 1

            for item in result:
                if item[-1] < 0:
                    continue
                stocks.append({
                    "stock_name": item[2],
                    "pe": item[-1],
                    "price": item[8],
                    "up_or_down": str(item[12]) + "%"
                })

        # 按pe降序排列
        stocks.sort(key=lambda x: x["pe"])

        return stocks

通过正则表达式对响应结果进行匹配后,获取个股的名称、PE 市盈率、价格、涨跌幅 4 个关键数据

最后,对个股列表按 PE 进行升序排列后直接返回

# 3. 服务化

当然,我们可以将这部分逻辑服务化供前端使用,以此提升用户的体验性

比如,使用 FastAPI 可以快速创建两个服务:根据关键字获取行业板块列表、根据板块路径获取个股列表

from pydantic import BaseModel

# 板块
class Plate(BaseModel):
    content: str  # 关键字


# 板块下的个股
class PlateStock(BaseModel):
    plate_path: str  # 板块路径

#===========================================================
...

# 获取板块列表
@app.post("/xag/plate_list")
async def get_plate_list(plate: Plate):
    pstock = PStock()
    try:
        result = pstock.get_plates_list(plate.content)
        return success(data=result, message="查询成功!")
    except Exception as e:
        return fail()
    finally:
        pstock.teardown()


# 获取某一个板块下的所有股票列表
@app.post("/xag/plate_stock_list")
async def get_plate_list(plateStock: PlateStock):
    pstock = PStock()
    try:
        result = pstock.get_stock_list(plateStock.plate_path)
        return success(data=result, message="查询成功!")
    except Exception as e:
        return fail()
    finally:
        pstock.teardown()
...

前端以 Uniapp 为例,使用 uni-table 组件展示行业板块列表及个股列表

部分代码如下:

//个股列表 platestock.vue
...
<view class="box">
                <uni-forms ref="baseForm" :modelValue="baseFormData" :rules="rules">
                    <uni-forms-item label="关键字" required name="content">
                        <uni-easyinput v-model="baseFormData.content" placeholder="板块关键字" />
                    </uni-forms-item>
                </uni-forms>
                <button type="primary" @click="submit('baseForm')">提交</button>

                <!-- 结果区域 -->
                <view class="result" v-show="result.length>0">
                    <uni-table ref="table" border stripe emptyText="暂无数据">
                        <uni-tr class="uni-item">
                            <uni-th align="center" class="uni-th" width="100%">板块</uni-th>
                            <uni-th align="center" class="uni-th" width="100%">涨跌幅</uni-th>
                            <uni-th align="center" class="uni-th" width="100%">强势股</uni-th>
                        </uni-tr>
                        <uni-tr class="uni-item" v-for="(item, index) in result" :key="index" @row-click="rowclick(item)">
                            <uni-td class="uni-th" align="center">{{ item.name }}</uni-td>
                            <uni-td align="center" class="uni-th">{{ item.up_or_down }}</uni-td>
                            <uni-td align="center" class="uni-th">{{ item.top_stock }}</uni-td>
                        </uni-tr>
                    </uni-table>
                </view>
            </view>
...
methods: {
            //表单提交数据
            submit(ref) {
                this.$refs[ref].validate().then(res => {
                    this.$http('xag/plate_list', this.baseFormData, {
                        hideLoading: false,
                        hideMsg: false,
                        method: 'POST'
                    }).then(res => {
                        console.log("内容:", res.data)
                        if (res.data && res.data.length > 0) {
                            this.$tip.success("查询成功!")
                            this.result = res.data
                        } else {
                            this.$tip.success("查询结果为空,请换一个关键字查询!")
                        }
                    }).catch(err => {
                        console.log("产生异常,异常信息:", err)
                    })

                }).catch(err => {
                    console.log('err', err);
                })
            }
...

最后部署完项目后,在前端页面就能根据板块名选择合适的个股进行投资了

dcc9e3b80cbe9dba3b526b391376d295.png

# 4. 总结一下

由于行业板块更适用于中长期投资,我们只需要根据某一个关键字筛选出一个板块,然后在板块下的个股列表中可以非常直观地看出市盈率较低的个股进行投资即可。

需要源码的同学,请在后台输入:小助手,找他领取(暗号:行业板块)


这是我开发的机器人公众号小号,目前增加了天气查询,955公司名单,关注时间查询;后面还会增加图片功能和每日送书抽奖送书活动,以及调戏功能,欢迎来体验,捧场。

全新机器人公众号上线啦,欢迎调戏!


 
推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

点阅读原文,看B站我的视频!

Python与AKShare实战:A股板块资金流向分析与策略构建 本文详细介绍了如何利用Python与AKShare金融数据接口库,进行A股板块资金流向的实战分析。通过获取概念与行业板块数据,进行深度清洗、计算综合资金强度指标,并实现可视化,文章旨在帮助投资者构建量化分析框架,精准捕捉市场热点,辅助投资决策。 阅读详情

相关推荐

A股板块量化统计模型部署指南:从环境搭建到API调用

量化投资的核心在于通过数学模型和计算机技术对金融市场进行系统性分析,其原理是通过处理海量历史数据,挖掘统计规律以辅助决策。这一技术为投资者提供了超越传统主观判断的客观分析框架,尤其在行业轮动和板块监控场景中价值显著。板块统计模型作为量化分析的基础工具,能够自动化完成特定行业(如光伏设备、计算机设备)的数据聚合、强度计算与趋势分析,大幅提升研究效率。本文聚焦于此类模型的工程化实践,详细解析其基于Python的数据处理流程(涉及pandas、numpy等核心库)、以CPU为主的运行环境要求,以及如何通过Fast

weixin_33724659的博客 382

Python获取某网站的行业/概念板块和个股历史数据(量化投资二)

可以自定义任意几个代码,即可获取对应行业或概念板块的历史数据,如2023.03.03日涨幅靠前的“Chiplet概念”的代码为BK1101。在代码中输入这两个代码[‘BK1101’],即可一次性获取想要的数据。将获取板块的url替换为获取某只个股的url,就可以获取个股的日K线数据。

199铱 2556

Python爬虫实战:获取股票市场数据和进行数据分析的完整指南

在本文中,我们深入探讨了如何使用Python编写爬虫来获取股票市场数据,并如何进行数据清洗、整理、分析和可视化。这些工具和技术可以帮助投资者更好地了解股票市场的趋势和特点,以支持他们的投资决策。

斌擎科技 966

Python爬虫案例:简单获取股票、指数、三大报表数据

爬取股票、指数和三大报表数据的目的和意义在于获取金融市场和上市公司的实时和历史数据,以供进一步分析、研究和决策。通过爬取股票数据,我们可以追踪股票价格的变化和波动,识别潜在的投资机会和风险,从而进行有效的股票交易。爬取指数数据可以帮助我们了解整个市场的走势和表现,监测市场整体风险和趋势,为资产配置和投资决策提供重要参考。

celiaweiwei的博客 1万+

用Python快速获取行业板块股,助力价值投资!

你可以基于获取到的数据进行进一步的分析,比如计算行业板块的估值指标、挑选具备投资价值的个股等。Python的强大数据处理和分析能力,与tushare提供的数据接口相结合,为你的价值投资策略提供有力支持。需要注意的是,你需要将’在这里填入行业板块代码,比如:SW001’替换为你想要获取的具体行业板块代码。除了获取行业板块股票数据外,tushare还提供了各种其他的金融市场数据,比如股票行情、财务指标等。获取到的数据将存储在一个pandas的DataFrame对象中,可以方便地进行进一步的数据处理和分析。

JieLun_C的博客 723

Python 读取通信达股票数据

Python 读通信达股票数据(含绘图代码)

教你用 Python 快速获取行业板块股,辅助价值投资

1.行业板块 行业板块与概念股在定义上还是有很大区别的。 一般来说,概念板块的风险更大,基于某个消息被短期炒作,很不稳定,因此风险更大 行业板块是按股票行业进行分类,往往注重于长期,稳定性更高。 在实际投资上,短期可以根据按「 市场热点」从概念股进行选股投资,中长期还是建议按「行业板块」选股进行投资。 2. 爬取相关板块及个股列表 目标对象: aHR0cDovL3N1bW1hcnkuanJqLmNvbS5jbi9oeWJrLw== 2-1板块列表 首先,我们使用 「...

m0_59485658的博客 1414

Livox-avia+FAST-LIO麻瓜使用教程

激光雷达 SLAM Fastlio 安装

aaaaaaaaaww12的博客 3677

A股处于3200点以下,是投资良机的黄金坑还是隐藏风险的深渊?

A股处于3200点以下,投资者面临抉择。A股历史表现、当下市场现状以及投资机会与风险显示,有投资机会,但也有隐藏风险,投资者需谨慎决策。

股票量化交易自动交易程序化交易接口 680

使用HFSS仿真分支波导耦合器

本文介绍了分支波导耦合器的HFSS仿真设计过程。首先给出了器件关键参数(t=0.365mm,l=1.600mm等),详细说明了建模步骤:包括创建中心分支、设置变量参数、镜像复制两侧分支、矩形波导端口设计等操作。重点阐述了激励端口设置方法,包括四个端口的积分线绘制,以及求解频率设定。最后展示了S参数、幅度平衡度和相位差等关键性能指标的仿真结果提取方法。整个设计过程体现了HFSS在微波器件仿真中的参数化建模和结果分析能力。

shao666888的博客 181

超越数据手册:深入Zynq XADC的DRP接口与PL端自定义采样逻辑

本文深入探讨Zynq-7000系列XADC模块的DRP接口机制与PL端自定义采样逻辑实现。通过硬件级多通道轮询、触发采样和实时校准技术,突破传统软件驱动限制,为高精度电压测量和通讯应用提供极致灵活性和响应速度。

xxx12的博客 770

股票交易中,如何选择适合自己投资风格的股票类型及板块

股票投资风格不同,选择股票类型与板块的方式就不同。了解投资风格后,根据风险、收益、市场趋势等挑选合适的,可增加投资成功的可能。

股票程序化接口 848

UFS Write Booster技术解析:原理、配置与故障排查实战

在存储技术领域,缓存机制是提升I/O性能的核心手段之一,其原理是通过高速存储介质暂存数据,减少对低速主存储的直接访问,从而降低延迟、提升吞吐。Write Booster正是这一原理在UFS(通用闪存存储)规范中的具体实现,它通过引入独立的易失性高速缓存区(Write Booster Buffer),将主机写入命令快速响应与后台数据持久化分离,技术价值在于显著改善随机写入性能,消除由垃圾回收等后台操作引发的写入卡顿。该技术广泛应用于智能手机应用安装、相机连拍、固件升级(OTA)等对写入流畅性要求高的场景。本文

weixin_42561143的博客 357

A股前景怎样,是涨是跌?

A股前景受宏观经济、政策等多种因素影响,宏观经济稳定增长支撑A股,政策利好有助于市场发展,且不同板块表现存在差异。

股票量化交易自动交易程序化交易接口 1035

脑影像分析入门:如何用一般线性模型(GLM)处理fMRI数据?

本文为神经影像研究入门者详细解析了如何运用一般线性模型(GLM)处理fMRI数据。文章从GLM的核心原理出发,逐步拆解了从实验设计、构建稳健设计矩阵、模型估计与统计推断,到高阶分析及多重比较校正的全流程,并指出了常见陷阱与结果解读要点,是掌握fMRI数据分析基础的关键指南。

weixin_29091445的博客 400

深入解析ACS SPiiPlus运动控制器的托管API架构与实战应用

本文深入解析了ACS SPiiPlus运动控制器的托管API架构,详细介绍了其核心模块、设计哲学与实战应用。通过C#/.NET封装的托管接口,开发者能够高效实现多轴协同运动控制、EtherCAT总线集成以及事件驱动的异步编程,显著提升高精度工业自动化设备的开发效率与系统稳定性。

jwt8token的博客 862

opencv_contrib 中的 Extra 2D Features Framework 全解析:实验性与非自由特征算法的检测、描述与匹配实践

本指南围绕 opencv_contrib 仓库中 `modules/xfeatures2d` 模块(Extra 2D Features Framework)展开,系统梳理该框架收录的实验性(experimental)与非自由(non-free)2D 特征检测器/描述子算法,覆盖 SURF、BRIEF、Censure/StarDetector、FREAK、LUCID、DAISY、LATCH、BEBL

gitblog_00752的博客 902

点云结构面智能识别与裂隙网络分析系统

点云结构面智能识别系统摘要 本系统采用深度学习与传统几何算法融合的方法,实现岩石结构面的智能识别与分析。系统包含7个核心模块:点云预处理、结构面识别、分组分割、参数计算、粗糙度分析、裂隙网络生成和可视化。技术路线结合PointNet++深度学习架构与RANSAC、区域生长等传统算法,通过预处理→深度学习识别→几何精修→参数计算→网络构建的流程实现高精度分析。预处理模块实现点云降噪、下采样和法向量估计,深度学习模块基于改进的PointNet++架构进行特征提取和分类。系统支持多种点云格式输入,提供完整的结构面

huanghm88的专栏 347

Python通达信数据接口:5分钟快速获取A股数据的完整解决方案

你是否曾经为了获取通达信数据而烦恼?手动导出CSV、格式转换、数据清洗...这些繁琐的操作浪费了你多少宝贵的时间?今天,我要向你介绍一个能让你**5分钟内搞定通达信数据**的神奇工具——Mootdx!这个Python金融数据分析工具专门为量化投资爱好者设计,让你直接读取通达信本地数据文件,无需任何中间转换步骤,真正实现金融数据自由! --- ## 1. 项目价值定位:从数据困境到量化自由 想

gitblog_00282的博客 732

JeecgBoot passwordChange 任意用户密码重置漏洞复现

​JeecgBoot 框架passwordChange接口存在任意用户密码重置漏洞,未经身份验证的远程攻击者可以利用此漏洞重置管理员账户密码,从而接管系统后台,造成信息泄露,导致系统处于极不安全的状态。

0xSec 2643

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

AI+量化01_投资与量化投资

目标: 掌握量化金融知识、使用Python进行量化开发背景:纯小白,仅买过基金和或许P2P(只知道某平台利率高,没考量过风险)本章是对投资与量化投资概念的基本学习,包含对开源内容的思维导图总结和纯小白 vs GPT4的问答。

libh的博客 1248

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

股市新动向解析:哪些板块即将崛起?投资者应如何布局?

股市有新动向,部分板块有望崛起,投资者要依据政策、行业趋势等多种因素布局,把握机会获取收益。

股票量化交易自动交易程序化交易接口 560

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

A股量化入门实战:策略思路与方法论【AI辅助编程,零基础也能上手】

但实际上,对于普通A股投资者来说,我们不需要搭建复杂的机器学习模型,也不需要追求高频交易的极致收益,只要掌握核心的策略思路和方法论,借助AI工具辅助编写代码,哪怕是Python零基础、量化小白,也能搭建出适合自己的、可落地的量化策略——这也是我今天要重点分享的核心内容:不用深陷代码细节,聚焦策略本身,让AI成为你的“编程助手”。:经典策略经过了市场的检验,逻辑成熟、风险可控,我们要做的不是“推翻”,而是“优化”——比如双均线策略,我们可以调整均线周期(如15日均线+40日均线),让它更适配某只股票的走势;

Python金融量化 875

A股市场现在是怎样的情况?

A股市场状况受多种因素影响,包括不同板块表现、市场参与者情况等,了解这些因素有助于投资者把握市场状况。

股票量化交易自动交易程序化交易接口 1067

A股市场何去何从,A股市场的未来是涨是跌?会走向何方?

A股市场未来受经济、政策、企业等多方面影响充满变数,注册制推进表明走向成熟,有结构性机会,政策影响大、流动性稳定、估值有吸引力但情绪波动大,投资者应明确自身情况制定策略,市场有望健康稳定发展。

股票量化交易自动交易程序化交易接口 945
上一篇: 最强的linux命令总结.pdf
下一篇: Python这些操作,逆天且实用!
菜鸟学Python
博客等级 码龄9年 8086粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值