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

如何调用单请求上限50条的API获取全量数据,解决打印异常与连接报错

问题原因

    1. 缺失OpenSea API必要请求头:OpenSea v1接口要求请求必须携带X-API-KEY请求头,未携带的请求会直接被拒绝,返回401/403状态码,这也是你加状态码校验后直接报连接错误的核心原因。
    1. 请求参数格式错误:你直接给token_ids传Python列表,requests默认会将列表参数序列化为token_ids[]=xxx的格式,不符合OpenSea API要求的多token_ids参数传递规范。
    1. 循环次数逻辑错误:总数据量2000条,单请求返回50条的话仅需要40次循环,你设置400次循环会导致后续请求的token_ids超出实际存在的范围,返回无效结果。
    1. MongoDB连接写法错误:你将client直接赋值为连接字符串,没有实例化MongoClient对象,后续操作数据库时也会抛出异常。

修复方案

前置准备

申请OpenSea API密钥,后续请求需要带入请求头。

修正后代码

from helpers import parse_meebit_data, parse_sale_data
import requests
import pandas as pd
import json
import time

import matplotlib
import matplotlib.pyplot as plt

plt.style.use('ggplot')

import pymongo
from pymongo import MongoClient

# 修正MongoDB连接
client = MongoClient('你的MongoDB连接字符串')
# 创建数据库
db = client['meebitsDB']
# 创建集合/表
meebits_collection = db['meebitsCollection']
sales_collection = db['salesCollection']

# 配置API参数
url = "https://api.opensea.io/api/v1/assets"
# 替换为你自己的OpenSea API Key
API_KEY = "你申请的OpenSea API密钥"
headers = {
    "X-API-KEY": API_KEY,
    "Accept": "application/json"
}
# 总数据2000条,50条/次,循环40次即可
for i in range(0, 40):
    start_id = i*50 + 1
    end_id = i*50 + 51
    param = {
        "token_ids": list(range(start_id, end_id)),
        "asset_contract_address": "0x7Bd29408f11D2bFC23c34f18275bBf23bB716Bc7",
        "order_direction": "desc",
        "limit": 50
    }
    # 加超时、异常捕获和重试逻辑
    try:
        response = requests.get(url, params=param, headers=headers, timeout=10)
        response.raise_for_status()
        data = response.json()
        # 此处可添加解析数据存入MongoDB的逻辑
        print(f"第{i+1}次请求成功,获取{len(data['assets'])}条数据")
        # 控制请求频率,避免触发限流
        time.sleep(1)
    except Exception as e:
        print(f"第{i+1}次请求失败,错误信息:{str(e)}")
        time.sleep(2)
        continue

额外注意事项

OpenSea免费API密钥有请求频率限制,若出现429状态码可适当延长请求间隔时间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:06:03