Как без перезагрузки получить DOMhtml?

146
26 июля 2019, 15:30

Люди добрые, помогите. Есть простой код: получаем html -> получаем из него элементы и выводим на экран

<?php
    require_once 'simple_html_dom.php';
    $k = 1;
    while($k<=3){
        // загружаем данные
        $url = "https://www.site.ru/".$k;
        $html = file_get_html($url);
        // как-то их обрабатываем
        echo '<div><ul>';
        for ($i=0; $i <5; $i++) {
            $res [] = $html->find('.className', $i);
            echo '<li>'.$res[$i].'</li>';
        };
    echo '</ul></div>';
    $html->clear(); // подчищаем за собой
    unset($html);
    $k++;
    }
?>

Цикл работает, но функция file_get_html() работает только видимо один раз т.к. следующая итерация выдает пустоту на экран. Как без перезагрузки зациклить функцию file_get_html() чтобы каждый раз отправлялся новый запрос? Может как-то записывать результат в БД а потом автоматически обновлять?(ну это уже мои выдумки). Может кто сможет по-простому объяснить, может какой код JavaScript прикрутить (только желательно родной не jQuery). Подключена библиотека simple_html_dom.php Спасибо. С рождеством Христовым!

Answer 1

Не знаком с библиотекой, но вот так работает, сначала собираем все вовнутрь $res, а уж в самом конце выводим список:

require_once "simple_html_dom.php";
$k = 1;
while ($k <= 3) {
    // загружаем данные
    $url = "https://ru.stackoverflow.com/questions/tagged/php?sort=newest&pagesize=15&page=" . $k;
    $html = file_get_html($url);
    // как-то их обрабатываем
    for ($i = 0; $i < 5; $i++) {
        $res [] = $html->find('.question-hyperlink', $i)->plaintext;
    };
    $html->clear(); // подчищаем за собой
    unset($html);
    $k++;
}
//вывод
echo '<div><ul>';
foreach ($res as $item) {
    echo '<li>' . $item . '</li>';
}
echo '</ul></div>';
//var_dump($res);
//0 => string 'Необходимо создать плагин php с кнопкой и изображением' (length=98)
//1 => string 'Оператор == для сравнения строк' (length=56)
//2 => string 'Redirect в .htaccess или проблема из картинками' (length=71)
//3 => string 'Как установить zend-developer-tools?' (length=49)
//4 => string 'Как без перезагрузки получить DOMhtml?' (length=64)
//5 => string 'Каким образом выгружается id_user (внешний ключ) в mysql базу' (length=100)
//6 => string 'Добавить свое поле в запрос SELECT' (length=57)
//7 => string 'Копирование строк таблицы mysql php' (length=58)
//8 => string 'помогите составить регулярное выражение для кириллицы [дубликат]' (length=120)
//9 => string 'Сохранит куки curl php' (length=34)
//10 => string 'Выбор региона WordPress' (length=35)
//11 => string 'Обновление данных за каждую неделю' (length=64)
//12 => string 'Laravel Passport - refresh_token' (length=32)
//13 => string 'lavarel 5.6 ошибка в PrettyPageHandler.php' (length=49)
//14 => string 'Логика получения баланса пользователя' (length=71)
Answer 2

Большое спасибо избранному из матрицы Jean-Claude.:-) Вот рабочий код маленького парсера страниц, расположенных в определенном порядке 1...99999. Если что коряво вы уж простите меня.

<?php
require_once "simple_html_dom.php";
$k = 1;//название страницы у меня это просто число у вас может быть "namePage"
while ($k <= 3) { //цикл получения нескольких страниц сайта здесь получаем 3шт.
    // загружаем данные
    $url = "http://www.site.ru/" . $k; //подставляем "namePage" в адрес
    $html = file_get_html($url); //получаем html
// как-то обрабатываем
for ($i = 0; $i < 5; ++$i) { //цикл получает 5 элементов с классом .nameClass и записывает их в массив res
    $res [] = $html->find('.nameClass', $i)->plaintext;            
    }
    echo '<div><ul>';
foreach ($res as $item) {//перебираем массив и выводим на экран
    echo '<li>' . $item . '</li>';
    };
    echo '</ul></div>';
$html->clear(); // подчищаем за собой. clear() ф-ция из библиотеки simple_html_dom.php
unset($html);
unset($res);// сброс переменной
++$k;
}
?>

  
  @charset "utf-8"; 
  /* CSS Document */ 
  * { 
    margin:0; 
    padding: 0; 
  } 
   ul li{ 
    display: inline-block; 
    margin-right: 5px; 
   }

READ ALSO
Как установить zend-developer-tools?

Как установить zend-developer-tools?

Установил через композер Zend framework, установить zend-developer-tools через композер не удалось, получаю ошибку:

135
Redirect в .htaccess или проблема из картинками

Redirect в .htaccess или проблема из картинками

Прошу помощиЕсть сайт с такими вот правилами редиректа:

144
Оператор == для сравнения строк

Оператор == для сравнения строк

Почему var_dump('0xafebac' == '11529132'); равно TRUE? Как происходит сравнение этих двух строк?

130
Замена lcg_value() на rand

Замена lcg_value() на rand

Проверив код программы увидел, что lcg_value() генерирует такие точки, что укладывает их по сути все рядомЗначение сильно не меняется

109