@EVOSandru6

Почему nokogiri класс в PHP парсит не все сайты?

По данному адресу https://github.com/olamedia/nokogiri есть замечательная библиотека nokogiri,
Которая отлично парсит предложенный в примере habrahabr.ru/

Пришлось написать рядом функцию (спасибо форумчанам!):

function gzdecode($data)
{
    return gzinflate(substr($data,10,-8));
}


И оно заработало!

Но вот проблема..

require('nokogiri.php');
function gzdecode($data)
{
    return gzinflate(substr($data,10,-8));
}

$html = gzdecode(file_get_contents('https://github.com/olamedia/nokogiri'));
$saw = new nokogiri($html);
echo '<pre>';
	foreach($saw->get('.css-truncate css-truncate-target') as $item){
             print_r($item['a']);
	}
echo '</pre>';


На данный адрес ругается:
Warning: gzinflate() [function.gzinflate]: data error in X:\home\sport\www\index.php on line 16

В чем может быть причина?
  • Вопрос задан
  • 3609 просмотров
Решения вопроса 1
w999d
@w999d
Web-developer
file_get_contents был взят для простоты примера. Лучше воспользоваться специализированной библиотекой, которая будет определять на основе заголовков, был сжат ответ сервера или нет. Могу посоветовать docs.guzzlephp.org/en/latest

ЗЫ. Приятно неожиданно встретить вопрос по своей библиотеке )
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Denormalization
@Denormalization
Может быть потому что github возвращает не gzip ответ? Убери gzdecode и должно заработать.
Ответ написан
kawabanga
@kawabanga
А ваш парсер с https справляется?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы