调用Blockchair API获取钱包交易历史时limit参数不生效问题
问题成因
- 参数拼接语法错误:URL中多个查询参数需要用
&连接,仅第一个参数前使用?。你构造的请求链接中limit参数前错误使用了?,导致该参数未被服务端识别,接口始终使用默认的100条返回配置。 - 免费接口单页上限限制:Blockchair公开免费接口的单页交易返回上限为100条,即便正确配置
limit参数,超过100的数值也不会生效,属于平台对免费用户的固定限流规则。
解决方案
- 首先修正请求参数的拼接逻辑,推荐直接用
requests的params参数传递查询条件,避免手动拼接URL出错。 - 采用分页拉取的方式获取全量交易,搭配
offset参数控制分页偏移量,循环请求直到获取所有交易,示例代码如下:
import requests import time address = '19iqYbeATe4RxghQZJnYVFU4mjUUu76EA6' base_url = f'https://api.blockchair.com/bitcoin/dashboards/address/{address}' limit = 100 offset = 0 all_transactions = [] # 先获取总交易数 init_resp = requests.get(base_url).json() total_count = init_resp['data'][address]['transaction_count'] while offset < total_count: params = { 'transaction_details': 'true', 'limit': limit, 'offset': offset } resp = requests.get(base_url, params=params) data = resp.json() current_tx = data['data'][address]['transactions'] all_transactions.extend(current_tx) offset += limit # 避免触发免费接口限流 time.sleep(1) # 验证获取到的总交易数 print(len(all_transactions))
提示:如果总交易数极大,可根据自身需求调整分页步长、或中断循环获取指定时间范围内的交易即可。
内容的提问来源于stack exchange,提问作者johnn1e
相关产品推荐
相关产品推荐

