Нужно при парсинге страницы с помощью simple html dom, сделать пагинацию. То есть парсер в странице каталога собирает ссылки на товары, но собирает эти ссылки он с 1 страницы, как сделать чтобы он собирал и со второй (третьей,... пятой) тоже?
Нашел здесь же одно решение:
define('PAGE_COUNT', 250);
define('URL_PATTERN', "https://itp.ne.jp/genre_dir/9570/pg/[pnum]/?sr=1&ngr=1&num=20");
$urls = [];
for($pnum = 1; $pnum <= PAGE_COUNT; $pnum++){
$urls[] = str_replace( '[pnum]', $pnum, URL_PATTERN);
}
print_r($urls);
Попробовал у себя сделать сделать так:
define('PAGE_COUNT', 2);
define('URL_PATTERN', "https://rozetka.com.ua/uslugi/c153670/page=[pnum]/");
$urls = [];
for($pnum = 1; $pnum <= PAGE_COUNT; $pnum++){
$urls[] = str_replace( '[pnum]', $pnum, URL_PATTERN);
foreach ($urls as $url) {
$html = curl_get($url);
$dom = str_get_html($html);
$services = $dom->find('.g-i-tile-i-box-desc');
foreach($services as $service){
$a = $service->find('.g-i-tile-i-title a', 0);
echo $a->href . '<br>';
}
}
}
В итоге подгружается почему то только последнее значение - то есть вторая страница и с нее выгражаются нужные ссылки на товары, но соответственно с первой страницы ссылки не выгружаются.
Как сделать так чтобы выгружались ссылки и с первой и со второй страницы?
Как минимум тут ошибка в коде, должно быть так (сначала заполнить весь массив url):
define('PAGE_COUNT', 2);
define('URL_PATTERN', "https://rozetka.com.ua/uslugi/c153670/page=[pnum]/");
$urls = [];
for($pnum = 1; $pnum <= PAGE_COUNT; $pnum++){
$urls[] = str_replace( '[pnum]', $pnum, URL_PATTERN);
}
foreach ($urls as $url) {
$html = curl_get($url);
$dom = str_get_html($html);
$services = $dom->find('.g-i-tile-i-box-desc');
foreach($services as $service){
$a = $service->find('.g-i-tile-i-title a', 0);
echo $a->href . '<br>';
}
}
Ну и далее curl может тупо не забирает первую страницу если неподключен CURLOPT_FOLLOWLOCATION
с https://rozetka.com.ua/uslugi/c153670/page=1/ идет 301 редирект на https://rozetka.com.ua/uslugi/c153670/
Ну и если дело действительно в 301 редиректе вариант решения без ковыряния curl
define('PAGE_COUNT', 2);
define('URL_PATTERN', "https://rozetka.com.ua/uslugi/c153670/");
$urls = [];
for($pnum = 1; $pnum <= PAGE_COUNT; $pnum++){
$urls[] = URL_PATTERN.($pnum==1 ? null : "page=$pnum/" );
}
foreach ($urls as $url) {
$html = curl_get($url);
$dom = str_get_html($html);
$services = $dom->find('.g-i-tile-i-box-desc');
foreach($services as $service){
$a = $service->find('.g-i-tile-i-title a', 0);
echo $a->href . '<br>';
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
написал скрипт, который выводит из базы данных дату последнего действияНо он не работает, пожалуйста помогите решить проблему :)
Есть вывод дочерних рубрик с постами одной указанной рубрики с id 23Все работает прекрасно, но нужно задать условие, не выводить рубрики, у которых...