Синтаксический анализатор PHP не работает для Википедии

Ниже мой php-код для вывода текста под id = Summary. Ну, этот скрипт работает нормально для других веб-сайтов, но не для Википедии. Я также вставил ошибку, которую я получаю ниже. Википедия ограничивает скрипт парсера? Если да, есть ли решение для анализа и получения контента из вики?
Заранее спасибо.

<?phpfunction getElementByIdAsString($url, $id, $pretty = true) {
$doc = new DOMDocument();

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);//    var_dump($doc->loadHTMLFile($url)); die;
error_reporting(E_ERROR | E_PARSE);
if(!$result) {
throw new Exception("Failed to load $url");
}
$doc->loadHTML($result);
// Obtain the element
$element = $doc->getElementById($id);

if(!$element) {
throw new Exception("An element with id $id was not found");
}

if($pretty) {
$doc->formatOutput = true;
}

// Return the string representation of the element
return $doc->saveXML($element);
}

//Here I am dispalying the output in bold text
echo getElementByIdAsString('https://en.wikipedia.org/wiki/A_Brief_History_of_Time', 'Summary');
?>

Ошибка:

Fatal error: Uncaught exception 'Exception' with message 'Failed to load http://en.wikipedia.org/wiki/A_Brief_History_of_Time' in C:\xampp\htdocs\example2.php:25 Stack trace: #0 C:\xampp\htdocs\example2.php(49): getElementByIdAsString() #1 {main} thrown in C:\xampp\htdocs\example2.php on line 25

1

Решение

похоже, это дубликат этого: php crawler для вики, получающих ошибку

причина в том, что curl пытается проверить сертификат, просто добавив:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

устранить проблему, но я рекомендую использовать все это

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
1

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

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

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