A股上市公司财务数据查询 | China A-Share Financials
When to use
- 用户问某上市公司的营业收入、销售费用、净利润、毛利率等财务数据
- 用户想查某公司近几年的财务指标变化趋势
- 用户需要某公司的利润表项目明细
- 用户需要多家公司对比的销售费用率等财务指标
Steps
1. 获取股票代码
确定股票代码。深交所6位代码(如002929),上交所6位代码(如603206),科创板8开头(如688292),新三板也支持(如832853=电旗股份)。同花顺适用于:A股主板、创业板、科创板、新三板。不适用于未上市公司。
2. 打开同花顺财务分析页面
browser_navigate(url="https://basic.10jqka.com.cn/{stockcode}/finance.html")
3. 切换到利润表 + 按年度视图
先点击"利润表"标签,再点击"按年度"按钮,从browser_snapshot中找到对应ref ID。"利润表"标签通常在"主要指标"右侧,"资产负债表"左侧。"按年度"按钮在导出数据区域附近。
4. 提取数据值
用browser_console提取数据。页面结构特殊——行标签和数据值分在不同的table中:
Table 1 (46行): 行标签(科目名称),每行只有1个th Table 2-3: 年度列头(如2025, 2024, 2023...) Table 4 (46行): 实际数据值,行索引与Table 1一一对应
关键行索引映射(Table 1 Table 4): Row 8: 其中:营业收入(主营业务收入的正确行) Row 10: 其中:营业成本 Row 12: 销售费用(销售费用的正确行) Row 13: 管理费用 Row 14: 研发费用 Row 15: 财务费用 Row 33: 五、净利润 Row 35: 归属于母公司所有者的净利润
注意:Row 2是*营业总收入(核心指标汇总行),Row 8是"其中:营业收入"(明细行)。对于费用率计算用Row 8和Row 12。
提取命令: var tables = document.querySelectorAll('.cwzb_table table'); var dataTable = tables[4]; var result = ''; for(var r=0; r<dataTable.rows.length; r++) { var cells = dataTable.rows[r].cells; var rowData = []; for(var c=0; c<Math.min(cells.length, 8); c++) { rowData.push(cells[c].innerText.trim()); } result += 'Row ' + r + ': ' + rowData.join(' | ') + '\n'; } result;
5. 计算比率
从数据中提取Row 8(营业收入)和Row 12(销售费用)的对应年度数据。注意单位——表显为"亿"或"万",直接用比值即可(如3.74亿/103.49亿=3.61%)。
6. (可选)提取业务构成数据
打开经营分析页面获取各业务收入占比:browser_navigate(url="https://basic.10jqka.com.cn/{stockcode}/operate.html"),用browser_console提取主营构成表格中的数据。按"主营产品"或"主营业务"分类查询。
Pitfalls
- 动态渲染:数据通过JS加载,browser_snapshot只能看到结构。必须用browser_console提取innerText
- 年度 vs 季度:默认"按报告期"含季报,查年报数据务必先切到"按年度"
- 列顺序:Table 4的Col 0=最近年份,Col 1=前一年,以此类推
- 新上市公司:近年IPO的公司仍有IPO前3-5年的数据
- ST/*ST公司:销售费用可能为负值(会计调整冲销)
- 单位:自动转为"亿"或"万"(如103.49亿/3345.36万)
- 新三板:代码以8开头,页面结构与A股相同
- 业务构成:经营分析按行业/产品/地区多口径,取"主营业务"或"主营产品"
批量处理技巧
当需要查询多公司时,使用delegate_task分批并行,每批5-6家。每批内串行处理(导航、点击、提取),JS脚本只改stockcode,最终汇总统一表格。
微信扫一扫