2011-01-11 2 views
2

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

$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))) 

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

ответ

6

Если вы посмотрите на API manual, вы увидите, что есть опция 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.

+0

Хорошо. Это работает отлично! Огромное спасибо ! – Orteil

Смежные вопросы