当前位置:

首页 > 编程开发 > 利用 Python 快速帮助价值投资者筛选行业板块股列表

利用 Python 快速帮助价值投资者筛选行业板块股列表

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

本文目录

    利用 Python 快速帮助价值投资者筛选行业板块股列表

    1. 行业板块

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

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

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

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

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

    目标对象:

    aHR0cDovL3N1bW1hcnkuanJqLmNvbS5jbi9oeWJrLw==

    利用 Python 快速帮助价值投资者筛选行业板块股列表

    2-1  板块列表

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

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

    利用 Python 快速帮助价值投资者筛选行业板块股列表

    其中,参数为 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
    ...
    
                    
                        
                            
                        
                    
                    提交
    
                    
                    0">
                        
                            
                                板块
                                涨跌幅
                                强势股
                            
                            
                                {{ item.name }}
                                {{ item.up_or_down }}
                                {{ item.top_stock }}
                            
                        
                    
                
    ...
    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);
                    })
                }
    ...
    

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

    利用 Python 快速帮助价值投资者筛选行业板块股列表

    4. 总结一下

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

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Python
    相关文章 更多
    python删除一个列表里的重复元素的方法与代码示例
    python删除一个列表里的重复元素的方法与代码示例

    学习如何使用Python高效删除列表中的重复元素。本文提供5种常见方法的代码示例,涵盖保持顺序与不保持顺序的场景,适合初学者和进阶开发者参考。

    Python写接口的步骤及完整代码示例
    Python写接口的步骤及完整代码示例

    详细讲解使用Python编写Web接口的核心步骤与完整代码示例,涵盖环境准备、路由定义、数据校验、服务启动及调试测试方法。

    codex怎么读取word文档及docx文件操作教程
    codex怎么读取word文档及docx文件操作教程

    介绍如何利用编程工具读取和解析Word文档(docx格式),涵盖基础文本提取代码示例、结构化数据处理逻辑,以及处理复杂排版时的技术局限与替代方案。

    怎么在Python中调用C语言代码提升性能
    怎么在Python中调用C语言代码提升性能

    详细讲解在Python中调用C语言代码提升性能的完整实践指南,包含原理分析、编译步骤、ctypes与CFFI具体实现、性能对比及常见陷阱。

    Python与C语言的性能差异及底层原理
    Python与C语言的性能差异及底层原理

    深入解析Python与C语言在执行效率上的数量级差异,从编译机制、变量内存布局、动态类型推断到GIL锁,系统阐明底层核心原理。

    Python和C语言哪个更适合编程入门
    Python和C语言哪个更适合编程入门

    客观对比Python与C语言在心智负担、底层机制与学习反馈上的核心差异,提供清晰有据的选择标准与切实的入门学习路径。

    selenium上传文件教程本地文件路径设置方法
    selenium上传文件教程本地文件路径设置方法

    深入解析Selenium处理文件上传的技术细节,涵盖标准HTML控件的路径直接注入法与非标准控件的系统级模拟方案,提供Windows与Linux环境下的路径设置最佳实践及常见异常排查。

    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景
    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景

    针对大数据工程场景,系统对比Java、Scala与Python在执行性能、生态结合、开发效率和维护成本上的核心差异,给出清晰的架构选型依据与落地方案。

    langgraph python guide中文入门教程详解
    langgraph python guide中文入门教程详解

    本篇LangGraph Python中文入门教程详解,系统梳理StateGraph状态机定义、节点编写、边与条件路由、检查点持久化(MemorySaver)等核心机制,提供从环境安装到完整循环智能体构建的代码示例与实操指导。

    Windows 安装 Python:从官方入口到虚拟环境的可复现实践
    Windows 安装 Python:从官方入口到虚拟环境的可复现实践

    面向后端开发者,基于 Python 官方文档说明如何在 Windows 上安装 Python、创建 venv 虚拟环境及使用 pip 管理依赖。包含可复制命令、验证方法及工具选择边界,避免常见配置误区。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。