Пытаюсь научится делать парсеры. Сейчас с помощью библиотеки phpquery делаю простенький парсер. Не получается пройтись дальше 2 страниц каталога чтобы вытащить артикул и цену на товар. Парсит 2 страницы и цикл запускается снова. Дублирует 2 страницы по несколько раз. Прикрепляю свой код. Помогите, пожалуйста, разобраться в том, что я записал не так. Заранее спасибо за ответ!
<?php
header('Content-type: text/html; charset=utf-8');
require 'phpQuery-onefile.php';
function parser ($url,$start,$end) {
if ($start < $end) {
$file = file_get_contents($url);
$doc = phpQuery::newDocument($file);
foreach ($doc->find('.product-list') as $position) {
$position = pq($position);
$articul = $position->find('.name > span:even(1)')->text();
$price = $position->find('.actions .price')->html();
// echo "<link rel='stylesheet' href='style.css'>";
echo '<pre>';
print_r($articul);
print_r($price);
echo '</pre>';
}
$next = $doc->find('.pagination li a')->attr('href');
if ( !empty($next) ) {
$start++;
parser($next, $start, $end);
}
}
}
$url = "https://www.agro-center.com.ua/combines-a/spare-parts-for-grain-harvesters/john-deere-c/";
$start = 0;
$end = 4;
parser($url,$start,$end);
phpQuery::unloadDocuments();
Просто вы не правильно ищите следующую страницу, вы берете первую ссылку в пагинации, а на второй странице: первая ссылка будет на первую страницу (обратно). Поэтому у вас всегда и получается 1-2-1-2-1-2...
Решение:
$next = $doc->find('.pagination li a')->attr('href');
Замените на:
$next = $doc->find('.pagination .active')->next()->find('a')->attr('href');
Тут мы берем первую ссылку после активного блока, т.е. на следующую страницу.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
На странице вывожу произвольные посты циклом WP_QueryНеобходимо получить все посты с определенными параметрами, а уже потом выполнить подсчет...
пытаюсь получить исходник страницы, но страница скачивается без той таблицы которая мне нужна, как я понял она потом подгружаетсякак мне...
Речь о произвольном типе постовЕсть переменная, содержащая некое число, например