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

使用Wikipedia API批量查询分类翻译结果缺失问题解决

解决维基API批量查询langlinks丢失的问题

问题根源

批量请求时部分早期分类的langlinks丢失,核心原因通常是未解析重定向条目或langlinks参数限制:

  • 很多早期分类条目是重定向状态,默认情况下API不会自动跟进重定向获取目标条目的langlinks,导致返回的重定向条目本身无langlinks数据。
  • 默认lllimit值较小(通常为10),若分类的langlinks数量超过限制,会被截断,但单请求时可能因参数默认值不同或隐式处理导致完整返回。

修正后的批量请求参数

要让批量请求和单请求行为一致,必须在请求中添加以下关键参数:

  • redirects=1:自动解析重定向,返回目标条目的数据而非重定向条目本身。
  • lllimit=max:设置langlinks返回的最大数量,确保所有关联语言链接都被获取。
  • lllang=目标语言代码(可选):如果只需要特定语言的翻译,比如lllang=zh,避免返回无关语言链接,同时优先返回目标语言结果。

示例批量请求URL:

https://en.wikipedia.org/w/api.php?action=query&titles=Category:19th_century_books|Category:Old_computers&prop=langlinks&redirects=1&lllimit=max&lllang=zh&format=json

代码实现与补全方案

如果调整参数后仍有个别条目丢失langlinks,可以在代码中对缺失条目单独请求补全:

批量请求+缺失补全示例(Python)

import requests

def get_langlinks(titles, target_lang="zh"):
    # 批量请求
    batch_url = (
        f"https://en.wikipedia.org/w/api.php?action=query&titles={titles}"
        f"&prop=langlinks&redirects=1&lllimit=max&lllang={target_lang}&format=json"
    )
    response = requests.get(batch_url)
    data = response.json()
    pages = data["query"]["pages"]
    
    # 检查并补全缺失的langlinks
    for page_id, page in pages.items():
        if "langlinks" not in page and "missing" not in page:
            # 对缺失条目单独请求
            single_url = (
                f"https://en.wikipedia.org/w/api.php?action=query&titles={page['title']}"
                f"&prop=langlinks&redirects=1&lllimit=max&lllang={target_lang}&format=json"
            )
            single_resp = requests.get(single_url)
            single_page = next(iter(single_resp.json()["query"]["pages"].values()))
            if "langlinks" in single_page:
                page["langlinks"] = single_page["langlinks"]
    return pages

# 使用示例(最多50个分类用|分隔)
batch_titles = "Category:19th_century_books|Category:Old_computers"
result = get_langlinks(batch_titles)
for page in result.values():
    print(f"{page['title']}: {page.get('langlinks', 'No translations')}")

验证要点

  • 先通过单请求确认某分类是否真的存在langlinks,排除本身无翻译的情况。
  • 检查批量请求返回的条目是否带有missing标记,这类是不存在的分类,无需处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:42:45