我对使用 API 相当陌生,并且一直在开发一个个人项目来存储我的 Yugioh 收藏。
使用Python和Yugipedia API,有没有一种简单的方法可以将每张卡片提取到CSV文件中? API 可以在这里找到:https://yugipedia.com/api.php 但我看不到任何有关提取卡数据的信息?
这是我迄今为止想到的:
import requests
import pandas as pd
def fetch_card_set_data(set_name):
try:
api_url = f'https://yugipedia.com/api.php?action=ask&query=[[Card%20set%20::{set_name}]]&format=json'
response = requests.get(api_url)
response.raise_for_status() # Raise an error for HTTP request if it fails
data = response.json()
return data
except (requests.HTTPError, requests.RequestException) as e:
print(f"Error fetching data for '{set_name}': {e}")
return None
except Exception as e:
print(f"Unexpected error occurred while fetching data for '{set_name}': {e}")
return None
def extract_info(data):
try:
set_name = data['query']['results'][0]['printouts']['Card set'][0]
release_date = data['query']['results'][0]['printouts']['Release date'][0]
return set_name, release_date
except (KeyError, IndexError) as e:
print(f"Error extracting information from API response: {e}")
return None, None
def create_csv(card_sets):
df = pd.DataFrame(card_sets, columns=['Set Name', 'Release Date'])
df.to_csv('card_sets.csv', index=False)
def main():
# List of card sets from the Yugipedia page
card_sets_list = [
'Legend of Blue Eyes White Dragon',
# Add more set names as needed
]
card_sets_info = []
for set_name in card_sets_list:
data = fetch_card_set_data(set_name)
if data:
set_info = extract_info(data)
if set_info[0]:
card_sets_info.append(set_info)
create_csv(card_sets_info)
if __name__ == "__main__":
main()
理想情况下,我只需要所有卡牌的完整列表及其设置代码、稀有度等,但这证明很困难
我使用了上面提到的代码,遇到了错误:Error fetching data for 'Blue Eyes White Dragon': 403 Client Error: Forbidden for url: https://yugipedia.com/api.php?action=询问&查询=%5B%5BCard%20set%20::图例%20of%20Blue%20Eyes%20White%20Dragon%5D%5D&format=json
我不明白为什么我会收到 403,因为我只是提取数据,而不是以任何方式操作它?
您在使用 Yugipedia API 时遇到的 403 Forbidden 错误通常表示您尝试访问的 API 端点访问受限或需要身份验证。这可能是由于 API 的使用政策或某些端点的限制造成的。
要解决此问题并使用 Python 将卡数据提取到 CSV 文件中:
查看 API 文档:查看 Yugipedia API 文档以了解哪些端点提供卡数据。有时,由于许可或其他限制,卡数据可能无法通过公共 API 获得。
身份验证:确定API是否需要任何形式的身份验证(例如 API 密钥或令牌)才能访问某些端点。如果没有正确的身份验证,您可能会遇到 403 错误。
替代数据源:如果 Yugipedia API 未提供您需要的卡片数据,请考虑使用其他来源,例如 Yu-Gi-Oh! Konami 提供的 TCG 卡数据库 API (https://db.ygoprodeck.com/api-guide/)。
法律注意事项:确保您在访问和使用来自外部 API 的数据时遵守任何使用政策或服务条款。
错误处理:在代码中实现强大的错误处理,以优雅地处理不同类型的错误(例如 HTTP 错误),并提供信息丰富的错误消息以帮助进行故障排除。
总而言之,在继续使用 Yugipedia API 提取卡片数据之前,请验证 API 的功能、身份验证要求和使用策略,以确保 Yugioh 收藏项目的数据检索顺利且合规。如果需要,探索全面卡数据的替代来源。