如何通过更改URL中的一个数字来循环浏览完整的API集合

问题描述 投票:0回答:2

我正在使用此API('https://api.opensea.io/asset/0x5d00d312e171be5342067c09bae883f9bcb2003b/1/')来收集有关某个游戏中各个数字资产的信息。 URL末尾的“ 1”代表token_id = 1的资产。我正在尝试获取我的代码来收集每种资产所需的变量,然后循环至下一个-token_id = 2,这将是“ URL末尾的2',token_id = 3,依此类推。最终资产将为token_id = 51,450。

我想打印结果,然后在可能的情况下以某种方式导出到excel,也一直在试图找出答案。感谢所有帮助,谢谢!

import json
import requests

r = requests.get('https://api.opensea.io/asset/0x5d00d312e171be5342067c09bae883f9bcb2003b/1/')
EMONA_json = r.json()
EMONA_str = json.dumps(EMONA_json, indent=2)

token_id = EMONA_json['token_id']
traits = EMONA_json['traits']
owner_address = EMONA_json['owner']['address']

print(token_id, traits, owner_address)

最佳情况-代码会将所有结果打印到excel中。每列将包含“ token_id”,“ traits”(最终将提取trait_type:class_name,level和catch_number值)和owner_address。

python json api
2个回答
0
投票

假设您的问题是如何处理50000+个api调用,那么就可以了:

使用队列(例如,RabbitMQ),该队列在事件失败时重试事件。创建50000个事件(或可能使用批处理)并将其发送到队列。服务将订阅此队列,该队列将进行实际的API调用。这可以并行进行。我会将结果数据存储在NoSQL(键值或文档)中,并以token_id作为哈希键。完成所有步骤后,扫描该表并创建excel / csv文件。


0
投票

这是一个非常简单的示例,希望可以指导您找到更完善和更好的解决方案。

为了使事情变得容易,我将结果输出到一个可以轻松导入到Excel中的csv文件中。

import json
import requests
import csv

result = {}
max_id_to_get = 3

for token_id in range(1,max_id_to_get):
    r = requests.get('https://api.opensea.io/asset/0x5d00d312e171be5342067c09bae883f9bcb2003b/{}'.format(token_id))
    EMONA_json = r.json()
    EMONA_str = json.dumps(EMONA_json, indent=2)
    token_id = EMONA_json['token_id']
    traits = EMONA_json['traits']
    owner_address = EMONA_json['owner']['address']
    result[token_id] = {"traits":traits, "owner_address":owner_address}

with open('output.csv', 'w') as csvFile:
    writer = csv.writer(csvFile)
    writer.writerow(["token_id", "traits", "owner_address"])
    for id in result:
        writer.writerow([id, result[id]['traits'], result[id]['owner_address']])
csvFile.close()
© www.soinside.com 2019 - 2024. All rights reserved.