Подтвердить что ты не робот

API Википедии: поиск известных людей

У меня есть следующий поисковый запрос API Википедии:

http://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=Albert%20Einstein

Я просто хочу перечислить известных людей - есть ли способ сделать это?

4b9b3361

Ответ 1

Нет точного способа ограничить результаты поиска только известными людьми. Тем не менее, вы можете использовать несколько различных фильтров в Wikipedia 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>"
        },

        ...

Когда-нибудь вы сможете использовать Wikidata для поиска объектов в Википедии, которые являются экземпляром человека. На данный момент нам придется работать с фильтрами поиска.

Ответ 2

Моим обходным решением для этого является фильтрация результатов поиска на стороне сервера, только показывая статьи, в birth_date которых есть содержимое для редактирования.

Баунти по-прежнему доступна, если кто-то найдет способ обойти это.

Ответ 3

Я думаю, что все люди будут иметь ... birthDate) (если все еще живы) или birthDate - died) в первой строке экстракт. Поэтому, я думаю, вы можете фильтровать только записи с выпиской, соответствующие этому регулярному выражению:

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

Это будет соответствовать текстам с чем-то вроде 2001) в первой строке.

Если можно с уверенностью предположить, что другие записи не имеют его (я не уверен, что это так), то вы можете остановиться там. Если нет, по крайней мере, вы отфильтровали еще несколько записей перед проверкой ревизии.

Ответ 4

Существует два URL-адреса для поиска известных людей:

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

Единственное различие между обоими url - это параметр gsrsearch:

Чтобы оживить людей, вы должны использовать hastemplate:Birth_date_and_age

Чтобы убить людей, вы должны использовать hastemplate:Birth_date

В моем случае я должен выполнить два запроса.

В этом примере url, juste замените Melanie_laurent на ваш запрос.