对于 A 股上市公司,推荐以下几种合法、稳定的数据获取方式:
方式 1:使用 akshare(推荐,免费合规)
注:代码中的"00***"为你关注的公司股票代码
python
import akshare as ak
# 安装:pip install akshare
# 获取公司基本信息
info = ak.stock_individual_info_em(symbol="00****")
print(info)
# 获取实时行情
quote = ak.stock_zh_a_spot_em()
woel = quote[quote['代码'] == '00***0']
print(woel)
# 获取历史行情(日线)
hist = ak.stock_zh_a_hist(symbol="00**", period="daily",
start_date="20240101", end_date="20241231",
adjust="qfq")
print(hist)
# 获取财务报表
profit = ak.stock_profit_sheet_by_report_em(symbol="0***30")
print(profit)
# 获取公司公告
news = ak.stock_notice_report(symbol="00**0", keyword="")
print(news)
方式 2:直接请求财经网站 API
很多财经网站(如东方财富)提供 JSON 接口:
python
import requests
import pandas as pd
# 东方财富 - 获取公司基本信息
url = "https://push2.eastmoney.com/api/qt/stock/get"
params = {
"secid": "0.002130", # 0=深圳, 1=上海
"fields": "f57,f58,f84,f85,f116,f117,f162,f167",
"ut": "fa5fd1943c7b386f172d6893dbfba10b"
}
resp = requests.get(url, params=params, headers={
"User-Agent": "Mozilla/5.0"
})
data = resp.json()
print(data)
方式 3:使用 tushare(需注册 token)
python
import tushare as ts
# 注册获取 token: https://tushare.pro/
ts.set_token('你的token')
pro = ts.pro_api()
# 公司基本信息
df = pro.stock_basic(ts_code='002130.SZ',
fields='ts_code,name,area,industry,list_date')
print(df)
# 财务数据
income = pro.income(ts_code='002130.SZ', period='20231231')
print(income)
方式 4:爬取深交所官网(权威源)
python
import requests
# 深交所公司信息接口
url = "https://www.szse.cn/api/report/ShowReport"
params = {
"SHOWTYPE": "JSON",
"CATALOGID": "1110", # 上市公司基本信息
"TABKEY": "tab1",
"txtDMorSM": "00***0"
}
headers = {"User-Agent": "Mozilla/5.0", "Referer": "https://www.szse.cn"}
resp = requests.get(url, params=params, headers=headers)
print(resp.json())
三、爬虫注意事项
| 事项 | 说明 |
|---|---|
| 合法性 | 遵守网站 robots.txt,不爬取禁止内容 |
| 频率控制 | 加入 time.sleep() 避免过于频繁的请求 |
| User-Agent | 设置浏览器标识头,模拟正常访问 |
| 优先官方 API | akshare/tushare 比直接爬网页更稳定可靠 |
| 数据用途 | 仅用于个人学习研究,不做商业用途 |
强烈推荐优先使用 akshare,它封装了几乎所有 A 股公司数据接口,数据来源合规,且完全免费,无需注册。