获取股票数据可以通过多种方式,以下是使用Python获取股票数据的一些方法:
使用`yfinance`库
`yfinance`是一个流行的Python库,用于从雅虎财经获取股票数据。
import yfinance as yf
获取单股数据
data = yf.download("AAPL", start="2022-01-01", end="2022-04-30")
获取多股数据
data = yf.download("SPY AAPL", start="2022-01-01", end="2022-04-30", group_by="ticker")
获取分钟级数据
data = yf.download("AAPL", start="2022-05-18", end="2022-05-23", interval="1m")
保存数据到Excel
data.to_excel("data.xlsx")
使用其他库
除了`yfinance`,还有其他库如`akshare`, `tushare`, `baostock`, `pytdx`等也可以用来获取股票数据。
import akshare as ak
import pandas as pd
获取股票数据
stock_zh_a_spot_df = ak.stock_zh_a_spot()
保存到Excel
stock_zh_a_spot_df.to_excel("data.xlsx")
使用API接口
一些金融数据提供商如东方财富、同花顺、雪球等提供了API接口,可以通过这些接口获取股票数据。
import requests
url = "http://27.push2.eastmoney.com/api/qt/clist/get"
for i in range(1, 10):
data = {
"fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152",
"pz": 1000,
"pn": i,
"fs": "m:0 t:6,m:0 t:80,m:1 t:2,m:1 t:23,m:0 t:81 s:2048"
}
response = requests.get(url, data)
response_json = response.json()
if response_json["data"] is None:
break
for j, k in response_json["data"]["diff"].items():
code = k["f12"]
处理数据
使用网页爬虫
可以通过网页爬虫从财经网站抓取股票数据。
import urllib.request
def get_price(code):
url = f"http://hq.sinajs.cn/?list={code}"
req = urllib.request.Request(url)
content = urllib.request.urlopen(req).read()
str = content.decode("gbk")
data = str.split('”').split(',')
name = data
price_current = float(data)
change_percent = (float(data) - float(data)) * 100 / float(data)
print(f"股票名称: {name}, 当前价格: {price_current}, 涨跌幅度: {change_percent}%")
注意事项
获取数据时要注意遵守网站的使用条款和条件,避免频繁请求导致IP被封禁。
数据的准确性和时效性需要根据实际情况进行验证和调整。
保存数据时可以选择不同的格式,如Excel、CSV等,以便于后续分析和处理。
以上方法可以帮助你获取股票数据。