You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何抓取Barchart.com上IBM的利润表财务数据?

解决方案:高效抓取Barchart财务数据

一、替换字符串截取,使用官方API(更高效稳定)

Barchart的利润表等财务数据有对应的API接口,无需依赖页面渲染或字符串截取。你可以通过浏览器开发者工具的Network面板筛选XHR请求找到端点,核心参数可直接指定股票代码、报告类型(季度/年度)、页码等。

1. API请求示例(PHP cURL实现)

// 利润表API端点
$apiEndpoint = "https://www.barchart.com/proxies/core-api/v1/financials/income-statement";

// 请求参数
$params = [
    'symbol'     => 'IBM',
    'reportType' => 'quarterly', // 可选值:quarterly/annual
    'reportPage' => 2,           // 对应不同年份的报告页
    'fields'     => 'date,revenue,grossProfit,netIncome' // 按需指定需要的财务字段
];

// 构建完整请求URL
$requestUrl = $apiEndpoint . '?' . http_build_query($params);

// 初始化cURL,模拟浏览器请求避免反爬
$ch = curl_init($requestUrl);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
        'Referer: https://www.barchart.com/stocks/quotes/IBM/income-statement/quarterly'
    ]
]);

// 执行请求并解析JSON
$response = curl_exec($ch);
curl_close($ch);

if ($response) {
    $financialData = json_decode($response, true);
    // 遍历处理数据
    foreach ($financialData['data'] as $item) {
        echo "报告日期: {$item['date']} | 总营收: {$item['revenue']} | 净利润: {$item['netIncome']}\n";
    }
} else {
    echo "API请求失败,请检查参数或网络";
}

2. API方式的优势

  • 效率高:仅返回JSON格式的目标数据,无需下载整个HTML页面
  • 稳定性强:API接口的参数和返回结构比页面DOM更稳定,不易因页面更新失效
  • 易维护:直接通过字段名提取数据,无需调整字符串截取的位置

二、原字符串截取方法的问题

你当前使用的字符串截取方式存在明显缺陷:

  • 依赖页面DOM结构(如report__row-dates类名),页面样式或结构修改就会导致抓取失败
  • 每次请求需下载完整HTML,数据冗余大,效率低下
  • 难以精准提取多维度财务数据,仅能获取局部内容

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 11:31:02