Мне нужна помощь. Использование API Mediawiki с командой «Продолжить» или «Запросить-продолжить» для извлечения информации из моих статей в вики. У меня есть большое количество статей в wiki (более 800 в настоящее время), и мне нужно использовать api, чтобы вытащить их в партиях по 50, а затем распечатать разделы.Использование API MediaWiki с помощью команды Продолжить
Мой API вызов работает правильно:
// Stackoverflow заставляет меня использовать действительный URL здесь, это апи на самом деле мой собственный локальный сервер http://en.wikipedia.org/w/api.php?action=query&list=allpages&apfrom=a&apto=z&apnamespace=0&format=xml&aplimit=50 Я запрашивая все страницы, поэтому «apfrom» и «Apto».
Мне просто нужна помощь в обработке кода с PHP и CURL, обращаясь к API и обрабатывая партии по 50 и используя «продолжить», чтобы получить доступ к большему количеству записей, пока я не дойду до конца. До сих пор мой PHP код:
//the CURL commands here work and outputs a data set but only for the first 50 records, so I need to call "continue" to get to the end.
//My api url is localhost but I'm forced to use a valid URL by Stackoverflow.com
$url = sprintf('http://en.wikipedia.org/w/api.php?
action=query&list=allpages&apfrom=a&apto=z&apnamespace=0&format=xml&aplimit=50');
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'My site');
$res = curl_exec($ch);
$continue = '';
while (// I don't know what to set here as true to get the while loop going, maybe continue = true? maybe set query-continue as true?)
{
//Maybe I need something other than $res['query-continue]??
if (empty($res['query-continue']))
{
exit;
}
else
{
$continue = '&apcontinue='.urlencode($res['query-continue']);
foreach ($res['query']['allpages'] as $v)
{
echo $v['title'];
}
}
}
Может кто-то исправить мой код цикла а выше, так что я могу сделать простую печать из названия из каждой вики-статьи в цикле? Я много раз искал в Интернете, но я застрял! Я нашел пример цикла python в http://www.mediawiki.org/wiki/API:Query, но мне нужно сделать это на PHP. И я не уверен, буду ли я называть continue или query-continue.
Если вы хотите запросить все страницы, не устанавливайте 'apfrom' и' apto' вообще. Не все имена страниц должны начинаться с буквы. – svick
Кроме того, почему вы не используете один из [API-библиотек] (http://en.wikipedia.org/wiki/Wikipedia:Creating_a_bot#PHP)? – svick
Я использую библиотеку botclasses.php, но у меня нет функции запроса, которая мне нужна. Некоторые из других библиотек botclass не работают для меня, поэтому я должен написать свою собственную функцию с продолжением. – Peter