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

如何通过Python调用spacresearch API获取页面全部上市公司信息

问题解决指南

一、JSONDecodeError报错解决方法

触发该报错的核心原因有两个:

  • 传参错误:你调用接口时传入的是公司全称Magnum Opus Acq Ltd,但接口要求传入的是root_symbol(股票类短标识),比如官方示例里的ANZUU,传错参数会导致接口返回非JSON格式的错误内容,无法解析。
  • 未做请求合法性校验:如果接口返回401(密钥错误)、429(请求超限)、500(服务端错误)等异常状态,返回内容不是JSON格式,直接调用.json()方法就会触发该报错。

你可以先修改基础请求函数,增加异常处理逻辑:

import requests
import time

YOUR_API_TOKEN = "替换为你的实际API密钥"

def get_company(root_symbol):
    end_point = f"https://www.spacresearch.com/api/v1/company/{root_symbol}"
    token = f"Bearer {YOUR_API_TOKEN}"
    headers = {"Authorization": token}
    try:
        resp = requests.get(end_point, headers=headers, timeout=10)
        # 先判断请求状态是否正常
        resp.raise_for_status()
        # 状态正常再尝试解析JSON
        return resp.json()
    except requests.exceptions.RequestException as e:
        print(f"请求{root_symbol}失败:{str(e)},前100位响应内容:{resp.text[:100]}")
        return None

二、批量查询实现方案

按以下步骤操作即可实现全量数据拉取:

  1. 提前清洗请求参数
    爬取live-deal页面时不要提取公司全称,直接提取每个SPAC对应的root_symbol字段,通常页面链接参数、元素的data-symbol属性中存储的就是该值,确保你拿到的标识列表全部是类似ANZUU的短标识,没有带空格、特殊符号的公司全称。
  2. 增加限流重试逻辑批量请求
    避免短时间请求过多被接口封禁,建议每次请求后暂停1-2秒,同时对失败请求可以增加1-2次重试,批量请求示例:
# 替换为你爬取清洗后的真实root_symbol列表
root_symbol_list = ["ANZUU", "XXX", "YYY"]
all_company_data = []

for idx, symbol in enumerate(root_symbol_list):
    print(f"正在处理第{idx+1}/{len(root_symbol_list)}个标识:{symbol}")
    data = get_company(symbol)
    if data:
        all_company_data.append(data)
    # 控制请求频率,避免触发接口限流规则
    time.sleep(1.5)

# 批量拉取完成后可将结果存储到本地文件
import json
with open("all_spac_company_data.json", "w", encoding="utf-8") as f:
    json.dump(all_company_data, f, ensure_ascii=False, indent=2)

注意事项

  • 提前确认你的API套餐权限,部分套餐有总请求量、单分钟请求量上限,超过限制会被接口拒绝返回数据
  • 爬取得到的root_symbol列表可以先做去重、空值清洗,减少无效请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:15:03