Википедия API возвращает только крошечный набор данных? - PullRequest
2 голосов
/ 12 января 2011

Привет, Я пытаюсь извлечь данные из статей Википедии, используя ее API (http://en.wikipedia.org/w/api.php) из PHP-скрипта, но мне всегда кажется, что я получаю лишь часть реального контента). Например, при попытке:

$page=get_web_page("http://en.wikipedia.org/w/api.php?action=query&titles=Cat&prop=links&format=txt");
echo $page["content"];

Вот что я получаю:

Array ( [query] => Array ( [pages] => Array ( [6678] => Array ( [pageid] => 6678 [ns] => 0 [title] => Cat [links] => Array ( [0] => Array ( [ns] => 0 [title] => 10th edition of Systema Naturae ) [1] => Array ( [ns] => 0 [title] => 3-mercapto-3-methylbutan-1-ol ) [2] => Array ( [ns] => 0 [title] => Abyssinian (cat) ) [3] => Array ( [ns] => 0 [title] => Actinidia polygama ) [4] => Array ( [ns] => 0 [title] => Adaptive radiation ) [5] => Array ( [ns] => 0 [title] => African Wildcat ) [6] => Array ( [ns] => 0 [title] => African wildcat ) [7] => Array ( [ns] => 0 [title] => Afro-Asiatic languages ) [8] => Array ( [ns] => 0 [title] => Age of Discovery ) [9] => Array ( [ns] => 0 [title] => Agouti signalling peptide ) ) ) ) ) [query-continue] => Array ( [links] => Array ( [plcontinue] => 6678|0|Albino ) ) ) 

Я запрашивал полный список ссылок в статье "Кошка", но, похоже, я получил только первые 10 в алфавитном порядке. Это происходит независимо от выбранного формата и даже от самого API (см. http://en.wikipedia.org/w/api.php?action=query&titles=Cat&prop=links). В чем причина этого ограничения и как я могу это исправить?

1 Ответ

6 голосов
/ 12 января 2011

Если вы посмотрите на руководство по API , вы увидите, что есть опция pllimit, которая указывает, сколько ссылок вы хотите отправить. Вы можете получить 500 или 5000, если у вас есть аккаунт бота, за один раз.

В конце дампа данных вы увидите следующее: [plcontinue] => 6678|0|Albino ). Вы можете предоставить эту информацию на сервер и получить больше ссылок со страницы, начиная с этого момента. Таким образом, следующий запрос, который вы сделаете, будет

$page=get_web_page("http://en.wikipedia.org/w/api.php?action=query&titles=Cat&prop=links&format=txt&plcontinue=6678|0|Albino");

Вам нужно будет продолжать делать это, пока сервер не вернет значение plcontinue.

...