Задать вопрос
@sania_00

Что я не так делаю с phpQuery?

Доброго времени суток!
Хочу в общем распарсить fl curl - ом!
Получаю html, и он корректный, а вот phpQuery как то непонятно себя ведет, подробнее описал в комментариях к коду.

<?php
require_once 'vendor/autoload.php';

// -------------------------- [ Main Code ] --------------------------

$url = 'https://www.fl.ru/projects/';

function parse_content($url=''){
    $ch = curl_init();

    $headers = [
        'User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36',
        'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
        'Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4',
        'Connection:keep-alive',
    ];
    $cookie = dirname(__DIR__) . 'tmp/cookie.txt';

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);

    $res = curl_exec($ch);

    curl_close($ch);

    $html =  iconv("windows-1251","utf-8", $res);

    return $html;
}

/* echo parse_content($url); // Тут html парситься нормально

exit;*/


$result = phpQuery::newDocument(parse_content($url));

//echo $result->html(); // А тут уже отдается пол страницы с непонятными символами

// Далее вообще не могу получить ничего

foreach ($result->find('#projects-list .b-post') as $block) {
    $obj = pq($block);

    $title = $obj->find('h2')->html();
    $prise = $obj->find('.b-post__price')->text();
    $text = $obj->find('.b-post__txt ')->text();

    print $title
        ."<br /> Цена:". $prise
        ."<br />" .      $text ;
}


phpQuery::unloadDocuments();


Спасибо за внимание!
  • Вопрос задан
  • 1424 просмотра
Подписаться 1 Оценить 3 комментария
Решения вопроса 1
Я так понимаю из-за невалидной разметки
phpQuery::newDocument
парсит только пол документа.
Если я прав, то нужно найти неправильный тэг ,отсутствия слеша, кавычки и т.п.
Далее через replace сделать валидный документ и только потом парсить.
PHp у меня нет)не запускал
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@sania_00 Автор вопроса
106696932a61405685dcb7e8585ebe01.png
Вот эти смайлы откуда-то беруться
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы