You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将MediaWiki API返回的Wikitext内容转为JSON或高效解析?

能否直接获取JSON/结构化格式?
  • 直接通过prop=revisions获取JSON格式的页面内容是不可行的,rvprop=content返回的始终是原始Wikitext。但有两种替代方式可以获取结构化数据:
    1. 使用action=parse接口:将Wikitext解析为包含HTML、章节结构、页面属性的结构化响应,请求示例:
      http://yugioh.wikia.com/api.php?action=parse&page=Red_Dragon_Archfiend&format=json&prop=html|sections|properties
      
      该接口返回的是解析后的页面结构,但不会直接提取出卡牌属性这类业务字段。
    2. 提取模板参数:游戏王维基的卡牌页面基本都基于统一模板构建,可通过两步获取模板的结构化键值对:
      • 第一步,获取页面使用的模板列表:
        http://yugioh.wikia.com/api.php?action=query&prop=templates&titles=Red_Dragon_Archfiend&format=json
        
      • 第二步,提取目标模板的参数:
        http://yugioh.wikia.com/api.php?action=parse&page=Red_Dragon_Archfiend&format=json&prop=templateargs
        
      这样就能拿到攻击力、守备力、种族这类结构化的卡牌信息。
高效解析Wikitext的最优方案

如果上述结构化获取方式无法满足需求,需要直接解析Wikitext,推荐以下方案:

  • 使用官方生态的解析库:
    • Python环境优先用mwparserfromhell,这是专门为MediaWiki Wikitext设计的解析库,支持模板提取、内容修改等操作,示例代码:
      import mwparserfromhell
      import requests
      
      # 发起API请求获取Wikitext
      api_url = "http://yugioh.wikia.com/api.php?action=query&prop=revisions&rvprop=content&format=json&titles=Red_Dragon_Archfiend"
      resp = requests.get(api_url).json()
      page_key = next(k for k in resp['query']['pages'] if k != '-1')
      wikitext = resp['query']['pages'][page_key]['revisions'][0]['*']
      
      # 解析并提取模板参数
      parsed_wikitext = mwparserfromhell.parse(wikitext)
      card_template = parsed_wikitext.filter_templates()[0]
      atk = card_template.get('atk').value.strip()
      race = card_template.get('race').value.strip()
      print(f"攻击力: {atk}, 种族: {race}")
      
    • JavaScript环境可以用mediawiki-wikitext-parser,支持在Node.js或浏览器中解析Wikitext。
  • 正则表达式(仅限固定结构场景):如果页面Wikitext格式完全固定,可用正则快速提取特定字段,但要注意格式变体可能导致解析失败,仅作为临时方案,示例:
    import re
    
    atk_match = re.search(r'\|atk\s*=\s*(\d+)', wikitext)
    if atk_match:
        print(f"攻击力: {atk_match.group(1)}")
    

内容的提问来源于stack exchange,提问作者RatlingRat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 01:00:08