维基百科API:搜索名人

时间:2015-05-23 22:58:37

标签: api wikipedia wikipedia-api

4 个答案:

答案 0 :(得分:6)

没有一种方法可以将您的搜索结果限制为只有知名人士。但是,您可以使用一些不同的filters in with Wikipedia's CirrusSearch来大致缩小搜索结果范围:

  • incategory:您能找到包含您想要的人的类别吗?类别可能不是一个很好的解决方案,因为它们可能不方便具体。
  • linksto:关于人的文章是否链接到共同文章?
  • hastemplate:你能找到一个用于着名人物传记的模板吗?模板{{birth date}}可能是一个很好的解决方案(如果将您的搜索范围限制在主要是非虚构的无争议的已知出生日期的人身上,则可以。)

例如,使用hastemplate:Birth_date查看相同的搜索结果以查看人员:

https://en.wikipedia.org/w/api.php?&action=query&generator=search&gsrnamespace=0&gsrlimit=20&prop=pageimages|extracts&pilimit=max&exintro&exsentences=1&exlimit=max&continue&pithumbsize=100&gsrsearch=hastemplate%3ABirth_date+Albert%20Einstein

{
"batchcomplete": "",
"continue": {
    "gsroffset": 20,
    "continue": "gsroffset||"
},
"query": {
    "pages": {
        "92733": {
            "pageid": 92733,
            "ns": 0,
            "title": "Albert A. Michelson",
            "index": 14,
            "thumbnail": {
                "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Albert_Abraham_Michelson2.jpg/71px-Albert_Abraham_Michelson2.jpg",
                "width": 71,
                "height": 100
            },
            "pageimage": "Albert_Abraham_Michelson2.jpg",
            "extract": "<p><b>Albert Abraham Michelson</b> (surname pronunciation anglicized as \"Michael-son\", December 19, 1852 \u2013 May 9, 1931) was an American physicist known for his work on the measurement of the speed of light and especially for the Michelson\u2013Morley experiment.</p>"
        },
        "736": {
            "pageid": 736,
            "ns": 0,
            "title": "Albert Einstein",
            "index": 1,
            "thumbnail": {
                "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Einstein_1921_by_F_Schmutzer_-_restoration.jpg/76px-Einstein_1921_by_F_Schmutzer_-_restoration.jpg",
                "width": 76,
                "height": 100
            },
            "pageimage": "Einstein_1921_by_F_Schmutzer_-_restoration.jpg",
            "extract": "<p><b>Albert Einstein</b> (<span><span>/<span><span title=\"/\u02c8/ primary stress follows\">\u02c8</span><span title=\"/a\u026a/ long 'i' in 'tide'\">a\u026a</span><span title=\"'n' in 'no'\">n</span><span title=\"'s' in 'sigh'\">s</span><span title=\"'t' in 'tie'\">t</span><span title=\"/a\u026a/ long 'i' in 'tide'\">a\u026a</span><span title=\"'n' in 'no'\">n</span></span>/</span></span>; <small>German:</small> <span title=\"Representation in the International Phonetic Alphabet (IPA)\">[\u02c8alb\u025b\u0250\u032ft \u02c8a\u026an\u0283ta\u026an]</span>; 14 March 1879&#160;\u2013 18 April 1955) was a German-born theoretical physicist.</p>"
        },
        "1139788": {
            "pageid": 1139788,
            "ns": 0,
            "title": "Alfred Einstein",
            "index": 6,
            "thumbnail": {
                "source": "https://upload.wikimedia.org/wikipedia/en/thumb/1/12/Alfred_Einstein.jpg/70px-Alfred_Einstein.jpg",
                "width": 70,
                "height": 100
            },
            "pageimage": "Alfred_Einstein.jpg",
            "extract": "<p><b>Alfred Einstein</b> (December 30, 1880&#160;\u2013 February 13, 1952) was a German-American musicologist and music editor.</p>"
        },

        ...

有一天,您应该能够使用维基数据在维基百科上搜索instance of human的实体。目前,我们必须使用搜索过滤器。

答案 1 :(得分:1)

我现在的解决方法是过滤服务器端的搜索结果,只显示其修订内容中包含birth_date的文章。

如果有人找到解决方法,那么赏金仍然可用。

答案 2 :(得分:1)

我认为所有人在提取的第一行都会有... birthDate)(如果还活着)或birthDate - died)。 所以我猜你只能过滤一个匹配这个正则表达式的提取的记录:

^[^.]*\d{4}\)[^.]*\..*

仅匹配第一行中2001)之类的文字。

如果可以安全地假设其他记录没有(我不确定),那么你可以在那里停下来。 如果没有,至少在检查修订版之前过滤了一些记录。

答案 3 :(得分:0)

有两个网址可供搜索名人:

https://en.wikipedia.org/w/api.php?action=query&generator=search&format=json&exintro&exsentences=1&exlimit=max&gsrlimit=20&gsrsearch=hastemplate:Birth_date_and_age+Melanie_laurent&pithumbsize=100&pilimit=max&prop=pageimages%7Cextracts
https://en.wikipedia.org/w/api.php?action=query&generator=search&format=json&exintro&exsentences=1&exlimit=max&gsrlimit=20&gsrsearch=hastemplate:Birth_date+Melanie_laurent&pithumbsize=100&pilimit=max&prop=pageimages%7Cextracts

两个网址之间的唯一区别是gsrsearch参数:

为了让人们活着,你必须使用hastemplate:Birth_date_and_age

为了让死去的人,你必须使用hastemplate:Birth_date

在我的情况下,我必须做两个请求。

在此示例中,url,juste用您的查询替换Melanie_laurent