前言
在量化投资领域,数据的获取质量直接决定了策略的有效性。同花顺作为国内主流的金融信息服务平台,积累了海量的行情与财务数据。对于希望进行自主分析的交易者来说,掌握利用 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:
return
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:
()

