Dram

Рейтинг
1115
Регистрация
28.06.2008
Nicolas Troz:
Второй сайт может и нормальный, но мне показался странным и стрёмным

Не зря показался....

png 184083.png

Лично я такое наблюдал именно у простых адаптивных блоков и !important не помогал.

Делаю следующую задачу и курл мне возвращает

string '
<script type="text/javascript">
function md5cycle(e,t){var i=e[0],a=e[1],r=e[2],n......
</script>
' (length=38572)

Это что за зверь и как его распарсить?

В браузере вижу обычный сайт...

Леня подсказал решение вопроса

$text = $elem->html();

$text = iconv('CP1251','UTF-8',$text);

var_dump($text);

Раньше был новые современные сайты, а этот старый динозавр в кодировке 1251

---------- Добавлено 25.05.2019 в 12:28 ----------

$links = 'http://hramy.ru/regions/city_abc.htm';

$pars = getPageByUrl ($links);

//$pars = iconv('CP1251','UTF-8',$pars);

require_once 'C:\OSPanel\domains\localhost\phpQuery.php';

$pq = phpQuery::newDocument($pars);

$elem = $pq->find('#table2');

$text = $elem->html();

Задачу я решил, это моя была инициатива вывести красиво :)) По кодировке не подскажите?

Вчерашнюю задачку решил - вытащив названия пицц из alt картинок.

Перешел к следующей задачи и опять застрял - кодировка сайта

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

Сначала пробовал менять тут

$pq = phpQuery::newDocument($pars);

на

$pq = phpQuery::newDocument($pars . 'utf-8');
или
$pq = phpQuery::newDocument('<meta charset="utf-8">' .$pars);

Перепробовал все виды сочетаний кодировок - победить не удалось.

Затем думаю подняться на уровень выше и менять кодировку в curl

Изменил

$result = curl_exec($curl);

на

$result = iconv('CP1251', 'UTF-8', curl_exec($curl));

и в результате получаю пустоту при запросе. Почему?

---------- Добавлено 25.05.2019 в 11:57 ----------

Еще попробовал $result = utf8_decode(curl_exec($curl));

была строка

<th dir="LTR" class="style1" style="width: 118px">�����</th>

стала

<th dir="LTR" class="style1" style="width: 118px">?????</th>

---------- Добавлено 25.05.2019 в 12:08 ----------

curl_setopt($curl, CURLOPT_ENCODING ,"UTF-8");

или

curl_setopt($curl, CURLOPT_ENCODING ,"");

вообще не оказывают никакого влияния

Да, тоже наблюдаю периодически. Никаким стилями я это победить не смог.

Получил все названия и только 1 картинку (самая первая)

где ошибся?

foreach ($elem as $product) {
$pqLink = pq($product);
$title = $pqLink->find('.product-card__title');
$kartinka = $pqLink->find('.product-card-media__element');
$img = $kartinka->attr('src');
echo "<h1>".$title ."</h1>". "<br>";
echo "<img src=".$img.">". "<br>";
}

Но тут вывод, насколько я понимаю опять такой же - сначала все названия, только потом картинки. Да от двух циклов ушли но как сделать вывод - название / картинка?

Дошел до парсинга реальных сайтов 😎

задача - получить названия и картинки пицц. Вот сваял я код, все получил.

$links = 'https://dominos.by/Pizza/';
$pars = getPageByUrl ($links);
require_once 'C:\OSPanel\domains\localhost\phpQuery.php';
$pq = phpQuery::newDocument($pars);
$elem = $pq->find('span')->remove();
$elem = $pq->find('.product-card__title');
$kartinka = $pq->find('.product-card-media__element');
$text = $elem->html();
//var_dump($text);


foreach ($elem as $pizza) {
$pqLink = pq($pizza);
echo $pqLink . "<br>";
}

foreach ($kartinka as $item) {
$src = pq($item);
$img = $src->attr('src');
echo $img . "<br>";
}

И захотелось мне вывести красиво :

Название - картинка
Название - картинка

и вот тут я застрял на 2 часа :))) как можно совместить два цикла?

Всего: 6928