跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python算法

Python 实战:同花顺股票数据爬取与指标提取

本文介绍如何使用 Python 结合 requests 和 pandas 库,从同花顺平台获取股票历史行情数据,并完成 MA 和 RSI 等技术指标的自动化计算。内容涵盖环境搭建、HTML 解析逻辑及核心算法实现,适合具备基础编程能力的投资者进行量化分析实践。

SqlMaster发布于 2026/2/18更新于 2026/6/916 浏览

前言

在量化投资领域,数据的获取质量直接决定了策略的有效性。同花顺作为国内主流的金融信息服务平台,积累了海量的行情与财务数据。对于希望进行自主分析的交易者来说,掌握利用 Python 自动化获取这些数据并计算技术指标的能力,是构建独立分析体系的关键一步。

本文将结合实战经验,演示如何基于 Python 生态抓取同花顺的公开行情数据,并利用 pandas 完成移动平均线(MA)、相对强弱指数(RSI)等核心指标的自动化计算。整个过程注重代码的可读性与合规性,旨在提供一套可复用的技术参考方案。

一、环境准备

1.1 依赖库安装

要实现高效的数据处理,我们需要引入几个核心库。requests 负责网络请求,BeautifulSoup 用于解析 HTML 结构,pandas 则是数据处理与分析的基石。

pip install requests beautifulsoup4 pandas

在实际开发中,建议将依赖写入 requirements.txt,方便后续环境迁移。

1.2 基础配置

编写爬虫时,模拟浏览器请求头(User-Agent)是避免被服务器拦截的基础手段。我们通常使用 Session 对象来保持连接状态,提高请求效率。

import requests
from bs4 import BeautifulSoup
import pandas as pd

# 设置请求头,模拟真实浏览器行为
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}

session = requests.Session()
session.headers.update(headers)

这里要注意,部分接口可能需要特定的 Cookie 或 Referer,实际运行时需根据目标页面的响应动态调整。

二、数据获取与解析

2.1 定位数据源

同花顺的行情页面结构相对稳定,K 线数据通常隐藏在表格或 JSON 字段中。我们以获取某只股票的日线数据为例,通过解析页面中的 JavaScript 变量或表格标签来提取原始数据。

def fetch_stock_data(stock_code):
    url = f"https://basic.10jqka.com.cn/{stock_code}/history.html"
    try:
        response = session.get(url, timeout=10)
        response.raise_for_status()
        soup = BeautifulSoup(response.text, 'html.parser')
        
        # 注意:实际结构中可能包含 script 标签内的 JSON 数据
        # 此处仅为示例逻辑,具体选择器需根据页面更新调整
        data_table = soup.find('table', class_='data-table')
        if not data_table:
             
            
        rows = data_table.find_all()[:] 
        data_list = []
         row  rows:
            cols = row.find_all()
             (cols) >= :
                data_list.append({
                    : cols[].text.strip(),
                    : (cols[].text),
                    : (cols[].text),
                    : (cols[].text),
                    : (cols[].text)
                })
         pd.DataFrame(data_list)
     Exception  e:
        ()
         
return
None
'tr'
1
# 跳过表头
for
in
'td'
if
len
5
'date'
0
'open'
float
1
'close'
float
2
'high'
float
3
'low'
float
4
return
except
as
print
f"获取数据失败:{e}"
return
None

这段代码的核心在于稳健地提取表格内容。如果页面结构发生变化,解析逻辑需要相应调整。在实际项目中,建议封装异常处理,确保程序不会因单条数据错误而中断。

三、技术指标计算

拿到清洗后的 DataFrame 后,就可以开始计算技术指标了。pandas 的向量化操作非常适合这类数值计算。

3.1 移动平均线 (MA)

MA 是最基础的平滑趋势指标,计算起来非常直观。

def calculate_ma(df, periods=[5, 10, 20]):
    df['MA5'] = df['close'].rolling(window=5).mean()
    df['MA10'] = df['close'].rolling(window=10).mean()
    df['MA20'] = df['close'].rolling(window=20).mean()
    return df
3.2 相对强弱指数 (RSI)

RSI 涉及涨跌动能的计算,稍微复杂一些,但逻辑依然清晰。

def calculate_rsi(df, period=14):
    delta = df['close'].diff()
    gain = (delta.where(delta > 0, 0)).rolling(window=period).mean()
    loss = (-delta.where(delta < 0, 0)).rolling(window=period).mean()
    rs = gain / loss
    df['RSI'] = 100 - (100 / (1 + rs))
    return df

运行这些函数后,DataFrame 中将包含完整的指标列,可以直接导出为 CSV 或用于绘图分析。

四、总结

通过上述步骤,我们实现了从数据抓取到指标计算的完整链路。这套流程不仅适用于同花顺,其核心思路——请求、解析、清洗、计算——同样适用于其他数据源。需要注意的是,爬虫行为应严格遵守目标网站的 robots 协议及服务条款,控制请求频率,避免对服务器造成压力。数据只是工具,理性的分析与风控才是投资的核心。

目录

  1. 前言
  2. 一、环境准备
  3. 1.1 依赖库安装
  4. 1.2 基础配置
  5. 设置请求头,模拟真实浏览器行为
  6. 二、数据获取与解析
  7. 2.1 定位数据源
  8. 三、技术指标计算
  9. 3.1 移动平均线 (MA)
  10. 3.2 相对强弱指数 (RSI)
  11. 四、总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • FPGA 实现高速数字信号处理的技术原理与实践
  • 小型语言模型(SLM)技术最新全面综述
  • Promise.then() 链式调用核心原理与实战避坑指南
  • 爬虫入门常见错误:5 个新手易踩的坑与解决方案
  • 通义万相 2.1 模型核心功能与云端部署指南
  • AutoGen 多智能体协作框架实战:GroupChatManager 使用详解
  • 基于 Astro 和 Claude Code 为 ShareLatex-CE 构建 GitHub Pages 落地页
  • Stable Diffusion 快速上手与本地部署指南
  • C++ 继承:面向对象代码复用的核心机制
  • Java 编译警告:源发行版 17 需要目标发行版 17 排查指南
  • GitHub Copilot 在 VSCode 中的使用指南
  • Midjourney 结合 Photoshop 实现电商场景快速合成
  • WiFi 模块 AT 指令详解及透传模式说明
  • 学生如何申请和使用 GitHub Copilot
  • Vue3 前端配置指南:VSCode settings.json 与 Prettier
  • Qwen3-4B-Instruct 本地 CPU 部署实战
  • Flutter eip55 库鸿蒙适配指南:以太坊地址校验与验证
  • AI 辅助艺术创作:风格迁移与构图生成
  • LazyLLM 多 Agent 应用实战:源码部署与 Web 调试指南
  • Docker 镜像构建优化与 MySQL 主从集群容器化部署

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online