PHP / phpquery - распрарсить таблицу

280
26 сентября 2017, 08:15

Как правильней распарсить таблицу? В итоге мне нужно, что-бы было так:

Основные|Бренд|BALLU
Основные|Гарантийный срок|24
Основные|Эффективен для помещ. площадью до|30
Основные|Цвет корпуса|Серый светлый
Основные|Габаритные размеры товара (В*Ш*Г)|0,18*0,94*0,09
Потребительские|Потребительский класс|Стандарт

И так далее.

Вот фрагмент кода, который ищет саму таблицу:

$table = pq("#tabChar table")->htmlOuter(); 

А вот сама таблица:

<table class="tbl tbl-char">
                            <tbody><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                        <td colspan="2" style="text-align:center;font-weight:bold;">Основные</td>
                                    </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Бренд</td>
                                    <td style="width:160px">BALLU</td>
                                </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Гарантийный срок</td>
                                    <td style="width:160px">24</td>
                                </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Эффективен для помещ. площадью до</td>
                                    <td style="width:160px">30</td>
                                </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Цвет корпуса</td>
                                    <td style="width:160px">Серый светлый</td>
                                </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Габаритные размеры товара (В*Ш*Г)</td>
                                    <td style="width:160px">0,18*0,94*0,09</td>
                                </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                        <td colspan="2" style="text-align:center;font-weight:bold;">Потребительские</td>
                                    </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Потребительский класс</td>
                                    <td style="width:160px">Стандарт</td>
                                </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                        <td colspan="2" style="text-align:center;font-weight:bold;">Производительность</td>
                                    </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Макс. потребляемая мощность</td>
                                    <td style="width:160px">3</td>
                                </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                        <td colspan="2" style="text-align:center;font-weight:bold;">Защита и безопасность</td>
                                    </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Класс пылевлагозащищенности</td>
                                    <td style="width:160px">IP24</td>
                                </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Защитная решетка</td>
                                    <td style="width:160px">Да</td>
                                </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Аварийное отключение при сильном наклоне или опрокидывании</td>
                                    <td style="width:160px">Нет</td>
                                </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                        <td colspan="2" style="text-align:center;font-weight:bold;">Технологии</td>
                                    </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Тип нагревательного элемента</td>
                                    <td style="width:160px">Инфракрасная кварцевая трубка</td>
                                </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                        <td colspan="2" style="text-align:center;font-weight:bold;">Комплектность</td>
                                    </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Набор крепежных элементов в комплекте</td>
                                    <td style="width:160px">Да</td>
                                </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                        <td colspan="2" style="text-align:center;font-weight:bold;">Монтажные</td>
                                    </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Вариант размещения</td>
                                    <td style="width:160px">Горизонтальное</td>
                                </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Вид установки (крепления)</td>
                                    <td style="width:160px">Потолочная / Настенная / Мобильная</td>
                                </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Напряжение электропитания</td>
                                    <td style="width:160px">220,0</td>
                                </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Сетевой кабель с вилкой</td>
                                    <td style="width:160px">Да</td>
                                </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                        <td colspan="2" style="text-align:center;font-weight:bold;">Управление</td>
                                    </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Тип термостата</td>
                                    <td style="width:160px">Механический</td>
                                </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                        <td colspan="2" style="text-align:center;font-weight:bold;">Вес и габариты товара</td>
                                    </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Вес товара (нетто)</td>
                                    <td style="width:160px">4.1</td>
                                </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Высота товара</td>
                                    <td style="width:160px">0.18</td>
                                </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Глубина товара</td>
                                    <td style="width:160px">0.09</td>
                                </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Ширина товара</td>
                                    <td style="width:160px">0.94</td>
                                </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                        <td colspan="2" style="text-align:center;font-weight:bold;">Дополнительные</td>
                                    </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Гарантийный документ</td>
                                    <td style="width:160px">Гарантийный талон</td>
                                </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Область применения</td>
                                    <td style="width:160px">Универсальное оборудование</td>
                                </tr><tr class="sp">
                                        <td colspan="2">&nbsp;</td>
                                    </tr><tr>
                                    <td>Серия</td>
                                    <td style="width:160px">Bali</td>
                                </tr>                       </tbody></table>

Мой код

    include "phpQuery.php";
$url = 'http://www.rusklimat.ru/obogrevateli/elektricheskie-obogrevateli/';
$doc = phpQuery::newDocumentFile($url);
$urls = $doc['.item .ttl a'];
$links = array();
foreach ($urls as $url) {
    $links[] = 'http://www.rusklimat.ru'.pq($url)->attr('href');
}
echo "<pre>";
print_r($links);
echo "</pre>";
echo "Товаров - ".count($links);
echo "<br/>";
phpQuery::unloadDocuments();
$i = 0;
$tovar_number = count($links) - 1;
while ($i <= $tovar_number) {
    $html_product = phpQuery::newDocumentFile($links[$i++]);
    $links_product = array();
    $links_product['name'] = trim(pq("h1")->text());
    $links_product['code'] = trim(pq(".article span")->text());
    $prices_price = trim(pq(".prices .price")->text());
    $links_product['price'] = preg_replace('~[^0-9]+~','',$prices_price); ;
    $links_product['_IMAGE_'] = "http://www.rusklimat.ru".pq(".c-gal-wrap .active")->attr('href');
    $links_product['_IMAGES_'] = '';
    $images = pq("body > section > div.content.roll.c > div > div.card.c > div.col-l > div.w.brd.c.c-pic-h > noindex > div:nth-child(2) > div > img");
    $dublicat_img = $links_product['_IMAGE_'].",";
    foreach ( $images as $p ) {
        $links_product['_IMAGES_'].= str_replace($dublicat_img,'',"http://www.rusklimat.ru".$p->getAttribute('src').",");
    }
    $table = $html_product->find('#tabChar table');
    foreach ($table as $el){
        $pq=pq($el);
        $pq->find('tr.sp')->remove();
    }
    echo $table;

    $articles[] = $links_product;
}
phpQuery::unloadDocuments();
echo "<pre>";
print_r($articles);
echo "</pre>";
READ ALSO
Ошибка fetch() php

Ошибка fetch() php

Вылизает ошибка:

323
отправка письма в yii2 [требует правки]

отправка письма в yii2 [требует правки]

ребят а реально ли отправить письмо после того как пройдет некоторое время в yii2 интересно каким будет его условие?

234
Что-то не так с выборкой данных php + mysqli

Что-то не так с выборкой данных php + mysqli

Вот что я пишу, поле такое есть,но почему-то не находит:

228
Как в PHP выбрать строку из таблицы только с расширением @? То есть почты

Как в PHP выбрать строку из таблицы только с расширением @? То есть почты

Есть таблица one_001 и в ней находится строка e_mail c адресами вот мне надо ее выбратьи вставлять куда угодно чтобы php понимал, что надо выбирать...

188