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

批量转换MediaWiki页面至HTML的API与本地方案优化问询

获取MediaWiki站点600-700页面HTML的优化方案探讨

已尝试的方案

选项1:使用action=parse Action API

效果良好,单页耗时约0.75秒,但不支持通过|分隔多页批量处理,只能通过循环逐个请求。Python示例代码:

def get_html(title):
    headers = {"User-Agent": USER_AGENT}

    pages = []
    if not isinstance(title, list):
        title = [title]
    for t in title:
        params = {
            "page": t,
            "action": "parse",
            "format": "json",
            "formatversion": "2",
        }
        req = requests.get(API_URL, headers=headers, params=params)
        pages.append(req.json()['parse']['text'])

    return pages

选项2:使用Wiki URL的render动作(非API)

仅支持单页处理,单页平均耗时约0.75秒,无批量处理能力。

选项3:使用REST API的/page/title/with_html或/page/title/html端点

需要目标Wiki部署RESTBase和VirtualRESTService,但目标站点未部署且无法自行安装;单请求耗时约0.75秒,无效率优势。

选项4:批量获取维基文本+Parasoid转换

通过action=query批量获取维基文本(50页/请求,总耗时约10秒),再传入Parasoid转换为HTML,单页转换耗时约0.185秒,但仍需循环处理,且模板、链接等内容需要后续修正。Python示例代码:

def get_html_parasoid(text):
    pages = []

    if not isinstance(text, list):
        text = [text]
    for t in text:
        data = {
            "wikitext": t,
        }
        # 替换为对应Parasoid转换接口地址
        PARSOID_URL = "Parasoid转换接口地址"
        headers = {"User-Agent": USER_AGENT}
        req = requests.post(PARSOID_URL, headers=headers, data=data)
        pages.append(req.text)

    return pages

选项5:action=query+prop=revisions+rvparse

该方式已废弃,无替代方案(仅action=parse可用),且仅返回首个页面的HTML(文档显示此选项强制设置rvlimit=1)。

疑问与需求

  • 使用MediaWiki API时,循环请求真的是最优方案吗?
  • 是否支持像query那样通过?titles=file1|file2|file3|...的方式批量调用parse或render?
  • 若采用本地转换维基文本为HTML的方案,能否实现无需在pip/conda虚拟环境外安装额外工具?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 16:45:16