我试图收集特定游戏中所有数字资产的数据。我正在从这个API中提取数据。URL末尾的1表示令牌_id=1。我的代码将从1循环到大约51400,并收集我需要的数据
我需要的三个特定“特征”是类名称、级别和捕获编号,但对于不同的令牌id,它们以不同的顺序出现,这意味着我不能像对令牌id=1所做的那样使用[0]、[2]、[3]。请参见下文,了解令牌id 1和令牌id 7的顺序如何变化:
我如何在“trait\u type”:“class\u name”下为每个令牌\u id提取值,而不管它的出现顺序如何
还有,为什么我将max_id_设置为_get=to anything>;超过40我会收到错误消息吗
import json
import requests
import csv
result = {}
max_id_to_get = 50
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']
name = EMONA_json['traits'][0]['value']
level = EMONA_json['traits'][2]['value']
catch_number = EMONA_json['traits'][3]['value']
owner_address = EMONA_json['owner']['address']
result[token_id] = {"name":name, "level":level, "catch_number":catch_number, "owner_address":owner_address}
with open('output.csv', 'w') as csvFile:
writer = csv.writer(csvFile)
writer.writerow(["token_id", "name", "level", "catch_number", "owner_address"])
for id in result:
writer.writerow([id, result[id]['name'], result[id]['level'], result[id]['catch_number'], result[id]['owner_address']])
csvFile.close()
如您所见,我的结果以不同的顺序显示,这取决于它们在JSON:https://imgur.com/a/aj2zaQK中的顺序
无论何时,我将max_id_设置为_get=41+我都会得到以下错误:
Traceback (most recent call last):
File "C:\Users\username\EMONA1.py", line 12, in <module>
token_id = EMONA_json['token_id']
KeyError: 'token_id'
我需要能够拉所有51000+所以这是一个主要问题,我还没有能够解决
目前没有回答
相关问题 更多 >
编程相关推荐