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

Python中如何获取Vanguard API的下一页JSON数据?

获取Vanguard API剩余3条数据的解决方法

我需要从Vanguard的相关API获取第501-503条数据(总共有503条),已经用以下代码成功拿到前500条:

import json
import requests
api_url = 'https://investor.vanguard.com/investment-products/mutual-funds/profile/api/VFIAX/portfolio-holding/stock.json'
get_server_information = requests.get(api_url)
json_data = get_server_information.json()
pretty_data=json.dumps(json_data,indent=4)

但尝试添加start=501&count=500、page=0/page=1等参数时都失败,仍只返回前500条,比如下面的无效代码:

import json
import requests
api_url = 'https://investor.vanguard.com/investment-products/mutual-funds/profile/api/VFIAX/portfolio-holding/stock&start=501'
get_server_information = requests.get(api_url)
json_data = get_server_information.json()
pretty_data=json.dumps(json_data,indent=4)

问题根源

  1. URL格式错误:无效代码里的URL漏掉了.json后缀,且参数应该用?作为第一个参数的开头,多参数之间用&连接,不能直接用&开头。
  2. 参数冗余:只需要3条数据,count设为3即可,无需设为500。

修正后的代码

import json
import requests

# 正确构造带分页参数的请求URL
api_url = 'https://investor.vanguard.com/investment-products/mutual-funds/profile/api/VFIAX/portfolio-holding/stock.json?start=501&count=3'
response = requests.get(api_url)
json_data = response.json()
# 格式化输出结果
pretty_data = json.dumps(json_data, indent=4)
print(pretty_data)

额外排查方向

如果还是无法获取目标数据,可以:

  • 检查API响应中的元数据(比如totalHolding、pagination字段),确认分页参数的正确名称(部分API会用offset代替start)。
  • 添加模拟浏览器的请求头,避免被服务器拦截:
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
    }
    response = requests.get(api_url, headers=headers)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 16:47:38