xml — Wikipedia Api подключается через php curl

У меня есть задача: получить по введенному ключевому слову статью в Википедии, сохранить ее в базе данных, а затем сделать поиск внутри них.

Проблема заключается в следующем: как получить доступ к 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;

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]