以下是一个使用Python爬取股票交易数据的示例代码,使用第三方库和公开数据接口实现:
import requests
import pandas as pd
import datetime
# 方法一:使用AKShare库(推荐)
def get_stock_data_ak(stock_code):
"""
使用AKShare获取股票历史数据
参数:stock_code 格式:sh600000(沪市)或sz000001(深市)
"""
try:
import akshare as ak
df = ak.stock_zh_a_hist(symbol=stock_code, adjust="qfq")
return df
except Exception as e:
print(f"获取数据失败:{str(e)}")
return None
# 方法二:直接爬取新浪财经接口
def get_stock_data_sina(stock_code):
"""
使用新浪财经接口获取历史数据
参数:stock_code 格式:sh600000 或 sz000001
"""
url = f"https://finance.sina.com.cn/realstock/company/{stock_code}/hisdata/klc_kl.js"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
try:
response = requests.get(url, headers=headers)
response.encoding = 'utf-8'
js_data = response.text.split('=')[1].strip()
data = eval(js_data)
# 解析数据
df = pd.DataFrame(data, columns=["date", "open", "high", "low", "close", "volume"])
df['date'] = pd.to_datetime(df['date'])
return df
except Exception as e:
print(f"获取数据失败:{str(e)}")
return None
# 使用方法示例
if __name__ == "__main__":
# 使用AKShare(需要先安装:pip install akshare)
stock_code = "sh600000" # 上证指数示例
data_ak = get_stock_data_ak(stock_code)
print("AKShare获取的数据:")
print(data_ak.head())
# 使用新浪接口
data_sina = get_stock_data_sina(stock_code)
if data_sina is not None:
print("\n新浪接口获取的数据:")
print(data_sina.head())
# 保存到CSV
data_sina.to_csv(f"{stock_code}_history.csv", index=False)
- 需要安装的库:
pip install requests pandas akshare
- 股票代码格式:
- 沪市股票:sh600000(浦发银行)
- 深市股票:sz000001(平安银行)
- 指数:sh000001(上证指数)
- 包含的数据字段:
- 日期(date)
- 开盘价(open)
- 最高价(high)
- 最低价(low)
- 收盘价(close)
- 成交量(volume)
如果需要获取实时数据,可以使用以下方法:
def get_realtime_price(stock_code):
"""获取股票实时报价"""
url = f"http://hq.sinajs.cn/list={stock_code}"
response = requests.get(url)
data = response.text.split(",")
return {
"名称": data[0].split('"')[1],
"今开": float(data[1]),
"昨收": float(data[2]),
"当前价": float(data[3]),
"最高": float(data[4]),
"最低": float(data[5]),
"更新时间": f"{data[30]} {data[31]}"
}
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/949267
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!