У меня есть задача: получить по введенному ключевому слову статью в Википедии, сохранить ее в базе данных, а затем сделать поиск внутри них.
Проблема заключается в следующем: как получить доступ к API и получить данные из Википедии, я пробовал этот URL (в начале я пробовал формат JSON):
$url = 'https://en.wikipedia.org/w/api.php?action=query&titles=Dog&prop=revisions&rvprop=content&format=xml';
и этот код php:
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
$res = curl_exec($ch);
if (!$res) {
echo 'cURL Error: '.curl_error($ch);
}
var_dump($res);
но ничего не случилось. Можно ли получить доступ к данным с помощью curl?
В конце один код работал с URL выше:
ini_set('user_agent','TestText');
$xmlDoc = new \DOMDocument();
$xmlDoc->load($url);
echo($xmlDoc->saveXML());
а потом я получаю текст, как это
{{о | домашняя собака | родственные виды, известные как «собаки» | Canidae | другие
использует | Собака |}} {{Redirect | Doggie | the Danish
artist | Doggie (artist)}} {{pp-semi-indef}} {{pp-move-indef}} {{Taxobox
| имя = домашняя собака | fossil_range = {{Fossil
диапазон | 0,033 | 0}} [[плейстоцен]] — [[последние]] |
Как я могу справиться с этим, чтобы быть красивее (текст с параграфами или простой текст)?
Итак, есть два вопроса:
1. Можно ли получить доступ к данным вики с помощью php curl и как мне улучшить мой код?
2. Как сделать код wiki xml красивее?
Мой вопрос о коде, особенно о curl. Почему это не работает?
А также, ответ на другой вопрос говорит только о URL-адресах Википедии API. Изменяя только URL, я не могу решить проблему.
Я нашел решение, CURLOPT_SSL_VERIFYPEER был необходим:
$url = 'http://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&explaintext=&titles=Dog';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
$res = curl_exec($ch);
//$json_data = mb_substr($res, curl_getinfo($ch, CURLINFO_HEADER_SIZE));
curl_close($ch);
$json = json_decode($res);
$content = $json->query->pages;
$wiki_id = '';
foreach ($content as $key => $value) {
$wiki_id = $key;
}
echo $content = $content->$wiki_id->extract;
Задача ещё не решена.
Других решений пока нет …