在维基百科中使用生成器时缺少页面内容 API

Missing page content when using generator in Wikipedia API

我正在使用维基百科中的 categorymembers 生成器 API 来有效地检索一个类别中的所有页面,例如:

https://en.wikipedia.org/w/api.php?action=query&format=json&prop=revisions&generator=categorymembers&rvprop=content&rvslots=*&gcmtitle=Category%3AAirports%20in%20Chad&gcmlimit=5000

(sandbox link)

但有些文章缺少内容,例如页面 id 40376021“Tchagen Airport”:

"40376021": {
    "pageid": 40376021,
    "ns": 0,
    "title": "Tchagen Airport"
},

但是,当我检索单个页面时,它确实有内容:

https://en.wikipedia.org/w/api.php?action=query&format=json&prop=revisions&titles=Tchagen%20Airport&formatversion=2&rvprop=content&rvslots=*

(sandbox link)

{
    "batchcomplete": true,
    "query": {
        "pages": [
            {
                "pageid": 40376021,
                "ns": 0,
                "title": "Tchagen Airport",
                "revisions": [
                    {
                        "slots": {
                            "main": {
                                "contentmodel": "wikitext",
                                "contentformat": "text/x-wiki",
                                "content": "page content here (long, ommited)"
                            }
                        }
                    }
                ]
            }
        ]
    }
}

我不知道这里发生了什么。它不是最近创建的页面,因此不可能是缓存问题。如何确保所有页面的内容都可以在批量结果中看到?

您只能看到前 50 页的内容。

因此,最好在您的请求中设置 gcmlimit=50https://en.wikipedia.org/w/api.php?action=query&format=json&prop=revisions&generator=categorymembers&rvprop=content&rvslots=*&gcmtitle=Category%3AAirports%20in%20Chad&gcmlimit=50

在响应中,您将看到一个 continue>gcmcontinue 值。在下一个请求中使用这个值来获取另外 50 页的内容: https://en.wikipedia.org/w/api.php?action=query&format=json&prop=revisions&generator=categorymembers&rvprop=content&rvslots=*&gcmtitle=Category%3AAirports%20in%20Chad&gcmlimit=50&gcmcontinue=page|482a402a042a3a4c48464c50011001dcc2dc0a|21079773

如果响应不包含继续值,则您知道您已检索到所有数据。