来自 Yugipedia MediaWiki 页面的完整卡片列表

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

我对使用 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,因为我只是提取数据,而不是以任何方式操作它?

python api
1个回答
-1
投票

您在使用 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 收藏项目的数据检索顺利且合规。如果需要,探索全面卡数据的替代来源。

© www.soinside.com 2019 - 2024. All rights reserved.