Я уже написал парсинг одной страницы. В данном случае для тренировки, я выбрал раздел http://relines.ru/catalog/chery-m11-481-engine-assy, т.к. здесь много однородной информации (коды деталей и наименования) и есть пагинация страниц. Задача пропарсить все "пагин"-страницы от 1 до 7. Я использую известную библиотечку simple_html_dom.php. Вот код парсинга одной страницы: Адрес парсинга не говорю, потому что, чувствую, участники форума накидают мне туда деталей )))). Я сделал также страничку с формой ввода страницы и прочей инфы, а также возможность отменить последние записи. Код (Text): <?php // example of how to use advanced selector features include('config.php'); include('simple_html_dom.php'); //$page_where_parse='http://relines.ru/catalog/chery-amulet/'; $page_where_parse=$_POST['page_adress']; $html = file_get_html($page_where_parse); //УСЛОВНЫЕ КОНСТАНТЫ. СЮДА ЖЕ ПЕРЕДАЮТСЯ ДАННЫЕ С ФОРМЫ $count_pars = count ($html->find('p.b-catalog__item__sku a')); //$car='CHERY'; //$model='Amulet'; //$rusname='Чери Амулет'; //$prefix='body'; $car=$_POST['car']; $model=$_POST['model']; $rusname=$_POST['rusname']; $prefix=$_POST['prefix']; $td_adress_folder='/katalog/'.$car.'/'.$model.'/'.$prefix.'/'; //проверяю скрипт на ошибки. Если выводится это, то ошибок в синтаксисе нет, по идее. //echo 'it works <br/>'.$count_pars.'<br/>'; //МАССИВЫ СОДЕРЖАНИЕ САЙТА $element_article=$html->find('p.b-catalog__item__sku a'); $element_name=$html->find('p.b-catalog__item__t a'); $td_adress_arr = array(); $td_content_arr = array(); $td_keywords_arr=array(); $td_description_arr=array(); $td_title_arr=array(); $td_content_arr=array(); ?> <html> <head> <title>Парсер RELINES.RU</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link href="/css/base.css" rel="stylesheet"> <!-- Bootstrap --> <link href="/css/bootstrap.css" rel="stylesheet"> <link href="/css/bootstrap-theme.css" rel="stylesheet"> <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <!-- Include all compiled plugins (below), or include individual files as needed --> <script src="/js/bootstrap.min.js"></script> <script type="text/javascript" src="/js/carousel.js"></script> </head> <body> <?php for($i = 0; $i < $count_pars; $i++) { //CONTENT $td_content_arr[$i]='НЕКИЙ КОНТЕНТ'; //CONTENT //ПОДГОТОВКА ПЕРЕМЕННЫХ global $car, $model, $td_adress_folder; $td_keywords_arr[$i]=$element_name[$i]->innertext.' '.$cars_arr[$i].' '.$models_arr[$i].', '.$element_article[$i]->innertext; $td_adress_arr[$i]=$td_adress_folder.$element_article[$i]->innertext.'/'; $td_title_arr[$i]=$element_name[$i]->innertext.' ('.$rusname.') '.$element_article[$i]->innertext; $td_description_arr[$i]='Магазин-склад запчастей. Автозапчасти для китайских автомобилей в наличии и на заказ. У нас Вы можете купить '.$element_name[$i]->innertext.' '.$element_article[$i]->innertext.' в розницу по оптовой цене. Доставка запчастей по всей России.'; //ВЫВОД ДАННЫХ //echo '<tr><td>'.$element_article[$i]->innertext.'</td><td>'.$element_name[$i]->innertext.'</td><td>'.$car.'</td><td>'.$model.'</td><td>'.$td_adress_arr[$i].'</td><td>'.$td_title_arr[$i].'</td></tr>'; //запись в бд. mysql_query(" INSERT INTO `parts_temp` (`tb_parts_name`, `tb_parts_code`, `tb_cars_manufacture`, `tb_cars_model`, `td_adress`, `td_title`, `td_keywords`, `td_description`, `td_content`) VALUES ('{$element_name[$i]->innertext}', '{$element_article[$i]->innertext}', '{$car}', '{$model}', '{$td_adress_arr[$i]}', '{$td_title_arr[$i]}','{$td_keywords_arr[$i]}', '{$td_description_arr[$i]}', '{$td_content_arr[$i]}')"); } ?> <div class="container container-fluid"> <h1>Парсинг страницы </h1> <p><?php echo $page_where_parse; ?></p> <p>Действие выполнено успешно. Добавлено записей: <?php echo $count_pars; ?></p> <p><a href="/pars-rlns.html"><b>Парсить новую страницу</b></a></p> <h2>Желаете отменить действие?</h2> <form class="form" role="form" name="form1" action="/delete-rlns.php" method="post"> <div class="form-group"> <div class="input-group"> <label class="sr-only" for="delete-rows">Удалить последние записи в кол-ве:</label> <div class="input-group-addon"><span class="glyphicon glyphicon-list"></span></div> <input type="text" class="form-control" id="delete-rows" name="delete-rows" value="<?php echo $count_pars; ?>"> </div> <div class="input-group"> <label class="sr-only" for="delete-model">Где модель:</label> <div class="input-group-addon"><span class="glyphicon glyphicon-list"></span></div> <input type="text" class="form-control" id="delete-model" name="delete-model" value="<?php echo $model; ?>"> </div> <button type="submit" class="btn btn-default">Удалить <span class="glyphicon glyphicon-remove"></button> </div> </form> </div> </body> </html> Я решил пропарсить все семь страниц сразу. Начинаю писать постепенно, тестирую каждый шаг, но вот, почти сразу запнулся. В комментариях в коде есть пояснения. Подскажите таблетку и как лучше адаптировать код выше под описанную задачу (обойти все страницы). Спасибо. Код (Text): <html> <head> <title>Парсер RELINES.RU</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link href="/css/base.css" rel="stylesheet"> <!-- Bootstrap --> <link href="/css/bootstrap.css" rel="stylesheet"> <link href="/css/bootstrap-theme.css" rel="stylesheet"> <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <!-- Include all compiled plugins (below), or include individual files as needed --> <script src="/js/bootstrap.min.js"></script> <script type="text/javascript" src="/js/carousel.js"></script> </head> <body> <div class="container container-fluid"> <table class="table table-bordered table-striped"> <?php //првоеряем валидность кода. Если будет показываться, то в php-коде ошибки нет echo 'code is valid<br/>'; // example of how to use advanced selector features include('../config.php'); include('../simple_html_dom.php'); //ПОЛУЧАЕМ СТАРТОВУЮ СТРАНИЦУ И ЗАПИСЫВАЕМ ЕЕ МАССИВ СТРАНИЦ, КОТОРЫЕ БУДЕМ ПАРСИТЬ $page_group=array(); $parse_start_page='http://relines.ru/catalog/lifan-smily-engine-and-transmission/'; $page_group[0]=$parse_start_page; $html = file_get_html($page_group[0]); $page_count = count ($html->find('a.b-catalog__paginator__item')); $pagin_page_adress = $html->find('a.b-catalog__paginator__item'); for($i = 0; $i <= $page_count; $i++) { //ЗАПИСЫВАЕМ В АДРЕСА СТРАНИЦ И ПОДГРУЗИТЬ СОДЕРЖИМОЕ ВСЕХ СТРАНИЦ $page_group[$i+1]='http://relines.ru'.$pagin_page_adress[$i]->href; //ЕСЛИ РАСКОММЕНИТРОВАТЬ СТРОЧКУ НИЖЕ, ТО echo $page_group[$i].'<br/>'; ВЫВЕДЕТ АДРЕСА ДО 4-Й СТРАНИЦЫ //$html = file_get_html($page_group[$i]); //ВЫДАЕТ ВСЕ АДРЕСА ПРАВИЛЬНО, ЕСЛИ СТРОЧКУ ВЫШЕ ОСТАВИТЬ В КОММЕНТАРИИ. echo $page_group[$i].'<br/>'; //А ВОТ ЕСЛИ ПОПЫТАТЬСЯ ПЕРЕНЕСТИ ИЗ ПАРСИНГА КОД В ЦИКЛ ВНУТРИ ЦИКЛА, ТО ПОЛУЧАЕТСЯ ХРЕНЬ КАКАЯ-ТО } ?> </table> </div> </body> </html>
Если так записать, то, на запрос echo в теле цикла ничего не выводит тоже Код (Text): <?php //проверяем валидность кода. Если будет показываться, то в php-коде ошибки нет echo 'code is valid<br/>'; // example of how to use advanced selector features include('../config.php'); include('../simple_html_dom.php'); //ПОЛУЧАЕМ СТАРТОВУЮ СТРАНИЦУ И ЗАПИСЫВАЕМ ЕЕ МАССИВ СТРАНИЦ, КОТОРЫЕ БУДЕМ ПАРСИТЬ $page_group=array(); $parse_start_page='http://relines.ru/catalog/lifan-smily-engine-and-transmission/'; $page_group[0]=$parse_start_page; $html=array(); $html[0] = file_get_html($page_group[0]); $page_count = count ($html->find('a.b-catalog__paginator__item')); $pagin_page_adress = $html->find('a.b-catalog__paginator__item'); $element_article=$html->find('p.b-catalog__item__sku a'); for($i = 0; $i <= $page_count; $i++) { //ЗАПИСЫВАЕМ В АДРЕСА СТРАНИЦ И ПОДГРУЗИТЬ СОДЕРЖИМОЕ ВСЕХ СТРАНИЦ $page_group[$i+1]='http://relines.ru'.$pagin_page_adress[$i]->href; //ЕСЛИ РАСКОММЕНИТРОВАТЬ СТРОЧКУ НИЖЕ, ТО echo $page_group[$i].'<br/>'; ВЫВЕДЕТ АДРЕСА ДО 4-Й СТРАНИЦЫ $html[$i] = file_get_html($page_group[$i]); //ВЫДАЕТ ВСЕ АДРЕСА ПРАВИЛЬНО echo $page_group[$i].'<br/>'; } ?> А вот так, если закомментировать строчку, то на запрос echo выводится список страниц, которые я буду парсить Код (Text): <html> <head> <title>Парсер RELINES.RU</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link href="/css/base.css" rel="stylesheet"> <!-- Bootstrap --> <link href="/css/bootstrap.css" rel="stylesheet"> <link href="/css/bootstrap-theme.css" rel="stylesheet"> <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <!-- Include all compiled plugins (below), or include individual files as needed --> <script src="/js/bootstrap.min.js"></script> <script type="text/javascript" src="/js/carousel.js"></script> </head> <body> <div class="container container-fluid"> <table class="table table-bordered table-striped"> <?php //проверяем валидность кода. Если будет показываться, то в php-коде ошибки нет echo 'code is valid<br/>'; // example of how to use advanced selector features include('../config.php'); include('../simple_html_dom.php'); //ПОЛУЧАЕМ СТАРТОВУЮ СТРАНИЦУ И ЗАПИСЫВАЕМ ЕЕ МАССИВ СТРАНИЦ, КОТОРЫЕ БУДЕМ ПАРСИТЬ $page_group=array(); $parse_start_page='http://relines.ru/catalog/lifan-smily-engine-and-transmission/'; $page_group[0]=$parse_start_page; $html=array(); $html = file_get_html($page_group[0]); $page_count = count ($html->find('a.b-catalog__paginator__item')); $pagin_page_adress = $html->find('a.b-catalog__paginator__item'); $element_article=$html->find('p.b-catalog__item__sku a'); for($i = 0; $i <= $page_count; $i++) { //ЗАПИСЫВАЕМ В АДРЕСА СТРАНИЦ И ПОДГРУЗИТЬ СОДЕРЖИМОЕ ВСЕХ СТРАНИЦ $page_group[$i+1]='http://relines.ru'.$pagin_page_adress[$i]->href; //ЕСЛИ РАСКОММЕНИТРОВАТЬ СТРОЧКУ НИЖЕ, ТО echo $page_group[$i].'<br/>'; ВЫВЕДЕТ АДРЕСА ДО 4-Й СТРАНИЦЫ //$html[$i+1] = file_get_html($page_group[$i]); //ВЫДАЕТ ВСЕ АДРЕСА ПРАВИЛЬНО echo $page_group[$i].'<br/>'; } ?> </table> </div> </body> </html> Подскажите, в чем здесь ошибка? Добавлено спустя 16 минут 58 секунд: Для metadon. Вот, я как бы так и делаю, просто пока коряво выходит. Я тут часть кода удалил. а так бы показал свои потуги. В общем. я во внутрь цикла помещал еще один цикл. Но как-то начальные знания не позволили правильно все записать, да и конструкция какой-то корявой. Вот не могу понять, почему при раскомментировании echo выводит не все адреса. Попробовал такую конструкцию: Код (Text): <html> <head> <title>Парсер RELINES.RU</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link href="/css/base.css" rel="stylesheet"> <!-- Bootstrap --> <link href="/css/bootstrap.css" rel="stylesheet"> <link href="/css/bootstrap-theme.css" rel="stylesheet"> <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <!-- Include all compiled plugins (below), or include individual files as needed --> <script src="/js/bootstrap.min.js"></script> <script type="text/javascript" src="/js/carousel.js"></script> </head> <body> <div class="container container-fluid"> <table class="table table-bordered table-striped"> <?php //проверяем валидность кода. Если будет показываться, то в php-коде ошибки нет echo 'code is valid<br/>'; // example of how to use advanced selector features include('../config.php'); include('../simple_html_dom.php'); //ПОЛУЧАЕМ СТАРТОВУЮ СТРАНИЦУ И ЗАПИСЫВАЕМ ЕЕ МАССИВ СТРАНИЦ, КОТОРЫЕ БУДЕМ ПАРСИТЬ $page_group=array(); $parse_start_page='http://relines.ru/catalog/lifan-smily-engine-and-transmission/'; $page_group[0]=$parse_start_page; $html=array(); $html = file_get_html($page_group[0]); $page_count = count ($html->find('a.b-catalog__paginator__item')); $pagin_page_adress = $html->find('a.b-catalog__paginator__item'); $element_article=$html->find('p.b-catalog__item__sku a'); $count_pars = count ($html->find('p.b-catalog__item__sku a')); for($i = 0; $i <= $page_count; $i++) { //ЗАПИСЫВАЕМ В АДРЕСА СТРАНИЦ И ПОДГРУЗИТЬ СОДЕРЖИМОЕ ВСЕХ СТРАНИЦ $page_group[$i+1]='http://relines.ru'.$pagin_page_adress[$i]->href; //ЕСЛИ РАСКОММЕНИТРОВАТЬ СТРОЧКУ НИЖЕ, ТО echo $page_group[$i].'<br/>'; ВЫВЕДЕТ АДРЕСА ДО 4-Й СТРАНИЦЫ $html = file_get_html($page_group[$i]); //ВЫДАЕТ ВСЕ АДРЕСА ПРАВИЛЬНО echo $page_group[$i].'<br/><br/>'; for ($j=0; $j<=$count_pars; $j++) { echo $element_article[$i]->innertext.'<br/>'; } } ?> </table> </div> </body> </html> Получил такой результат: Код (Text): code is valid http://relines.ru/catalog/lifan-smily-engine-and-transmission/ LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A LF479Q1-1025015A http://relines.ru/catalog/lifan-smily-engine-and-transmission/page_2 LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A LF481Q1-1701334A http://relines.ru/catalog/lifan-smily-engine-and-transmission/page_3 LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A LF479Q1-1025100A http://relines.ru/catalog/lifan-smily-engine-and-transmission/page_4 LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A LF479Q1-1306100A Добавлено спустя 4 минуты 13 секунд: Вернее, вот код: Код (Text): <html> <head> <title>Парсер RELINES.RU</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link href="/css/base.css" rel="stylesheet"> <!-- Bootstrap --> <link href="/css/bootstrap.css" rel="stylesheet"> <link href="/css/bootstrap-theme.css" rel="stylesheet"> <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <!-- Include all compiled plugins (below), or include individual files as needed --> <script src="/js/bootstrap.min.js"></script> <script type="text/javascript" src="/js/carousel.js"></script> </head> <body> <div class="container container-fluid"> <table class="table table-bordered table-striped"> <?php //проверяем валидность кода. Если будет показываться, то в php-коде ошибки нет echo 'code is valid<br/>'; // example of how to use advanced selector features include('../config.php'); include('../simple_html_dom.php'); //ПОЛУЧАЕМ СТАРТОВУЮ СТРАНИЦУ И ЗАПИСЫВАЕМ ЕЕ МАССИВ СТРАНИЦ, КОТОРЫЕ БУДЕМ ПАРСИТЬ $page_group=array(); $parse_start_page='http://relines.ru/catalog/lifan-smily-engine-and-transmission/'; $page_group[0]=$parse_start_page; $html=array(); $html = file_get_html($page_group[0]); $page_count = count ($html->find('a.b-catalog__paginator__item')); $pagin_page_adress = $html->find('a.b-catalog__paginator__item'); $element_article=$html->find('p.b-catalog__item__sku a'); $count_pars = count ($html->find('p.b-catalog__item__sku a')); for($i = 0; $i <= $page_count; $i++) { //ЗАПИСЫВАЕМ В АДРЕСА СТРАНИЦ И ПОДГРУЗИТЬ СОДЕРЖИМОЕ ВСЕХ СТРАНИЦ $page_group[$i+1]='http://relines.ru'.$pagin_page_adress[$i]->href; //ЕСЛИ РАСКОММЕНИТРОВАТЬ СТРОЧКУ НИЖЕ, ТО echo $page_group[$i].'<br/>'; ВЫВЕДЕТ АДРЕСА ДО 4-Й СТРАНИЦЫ $html = file_get_html($page_group[$i]); //ВЫДАЕТ ВСЕ АДРЕСА ПРАВИЛЬНО echo $page_group[$i].'<br/><br/>'; for ($j=0; $j<=$count_pars; $j++) { echo $element_article[$j]->innertext.'<br/>'; } } ?> </table> </div> </body> </html> А вот результат: Код (Text): code is valid http://relines.ru/catalog/lifan-smily-engine-and-transmission/ LF479Q1-1025015A LF481Q1-1701334A LF479Q1-1025100A LF479Q1-1306100A LF479Q1-3707800A LF479Q1-3707000A LF479Q1-1003015A LF481Q3-3802100C LF479Q1-1003203A LF479Q1-3802100A LBA1132150B1 LF479Q1-1025022A LF479Q1-1025023A LF479Q1-1025021A LBA3705100B1 LF481Q1-1702160A LBA3616100B1 LF479Q1-1005022A LF481Q1-1701030A LBA3612600B1 LBA3612300 LF479Q3-1307100A-1 LF479Q1-1007017A LF479Q1-3818100A LF479Q1-1007018A LF479Q1-1006011A LBA3612300B1 LF481Q1-1701330A LF479Q1-1003300A LF479Q1-1014100A LF479Q1-1008014A LF479Q1-1003012A LF481Q1-3802100B1 q1840620 LF479Q1-1025025A LF479Q1-1005019A LF479Q1-1003013A LBA1132150 LBA3612500 LBA1132160B1 LF479Q1-1307015A LBA3612600 LF479Q1-1004200A LF479Q3-3701190A LBA1132160 LF479Q1-1008203A LF479Q1-1007011A LF481Q1-3729100A LF479Q3-3708130A LF479Q1-1009100A LBA1130310B1 LBA3614300B1 LBA3614300 LF479Q1-3765011A LF479Q1-1003017A LF481Q1-2303324A LF481Q1-1701331A LF479Q1-1004100A LF481Q1-2303323A LBA3705100 http://relines.ru/catalog/lifan-smily-engine-and-transmission/page_2 LF479Q1-1025015A LF481Q1-1701334A LF479Q1-1025100A LF479Q1-1306100A LF479Q1-3707800A LF479Q1-3707000A LF479Q1-1003015A LF481Q3-3802100C LF479Q1-1003203A LF479Q1-3802100A LBA1132150B1 LF479Q1-1025022A LF479Q1-1025023A LF479Q1-1025021A LBA3705100B1 LF481Q1-1702160A LBA3616100B1 LF479Q1-1005022A LF481Q1-1701030A LBA3612600B1 LBA3612300 LF479Q3-1307100A-1 LF479Q1-1007017A LF479Q1-3818100A LF479Q1-1007018A LF479Q1-1006011A LBA3612300B1 LF481Q1-1701330A LF479Q1-1003300A LF479Q1-1014100A LF479Q1-1008014A LF479Q1-1003012A LF481Q1-3802100B1 q1840620 LF479Q1-1025025A LF479Q1-1005019A LF479Q1-1003013A LBA1132150 LBA3612500 LBA1132160B1 LF479Q1-1307015A LBA3612600 LF479Q1-1004200A LF479Q3-3701190A LBA1132160 LF479Q1-1008203A LF479Q1-1007011A LF481Q1-3729100A LF479Q3-3708130A LF479Q1-1009100A LBA1130310B1 LBA3614300B1 LBA3614300 LF479Q1-3765011A LF479Q1-1003017A LF481Q1-2303324A LF481Q1-1701331A LF479Q1-1004100A LF481Q1-2303323A LBA3705100 http://relines.ru/catalog/lifan-smily-engine-and-transmission/page_3 LF479Q1-1025015A LF481Q1-1701334A LF479Q1-1025100A LF479Q1-1306100A LF479Q1-3707800A LF479Q1-3707000A LF479Q1-1003015A LF481Q3-3802100C LF479Q1-1003203A LF479Q1-3802100A LBA1132150B1 LF479Q1-1025022A LF479Q1-1025023A LF479Q1-1025021A LBA3705100B1 LF481Q1-1702160A LBA3616100B1 LF479Q1-1005022A LF481Q1-1701030A LBA3612600B1 LBA3612300 LF479Q3-1307100A-1 LF479Q1-1007017A LF479Q1-3818100A LF479Q1-1007018A LF479Q1-1006011A LBA3612300B1 LF481Q1-1701330A LF479Q1-1003300A LF479Q1-1014100A LF479Q1-1008014A LF479Q1-1003012A LF481Q1-3802100B1 q1840620 LF479Q1-1025025A LF479Q1-1005019A LF479Q1-1003013A LBA1132150 LBA3612500 LBA1132160B1 LF479Q1-1307015A LBA3612600 LF479Q1-1004200A LF479Q3-3701190A LBA1132160 LF479Q1-1008203A LF479Q1-1007011A LF481Q1-3729100A LF479Q3-3708130A LF479Q1-1009100A LBA1130310B1 LBA3614300B1 LBA3614300 LF479Q1-3765011A LF479Q1-1003017A LF481Q1-2303324A LF481Q1-1701331A LF479Q1-1004100A LF481Q1-2303323A LBA3705100 http://relines.ru/catalog/lifan-smily-engine-and-transmission/page_4 LF479Q1-1025015A LF481Q1-1701334A LF479Q1-1025100A LF479Q1-1306100A LF479Q1-3707800A LF479Q1-3707000A LF479Q1-1003015A LF481Q3-3802100C LF479Q1-1003203A LF479Q1-3802100A LBA1132150B1 LF479Q1-1025022A LF479Q1-1025023A LF479Q1-1025021A LBA3705100B1 LF481Q1-1702160A LBA3616100B1 LF479Q1-1005022A LF481Q1-1701030A LBA3612600B1 LBA3612300 LF479Q3-1307100A-1 LF479Q1-1007017A LF479Q1-3818100A LF479Q1-1007018A LF479Q1-1006011A LBA3612300B1 LF481Q1-1701330A LF479Q1-1003300A LF479Q1-1014100A LF479Q1-1008014A LF479Q1-1003012A LF481Q1-3802100B1 q1840620 LF479Q1-1025025A LF479Q1-1005019A LF479Q1-1003013A LBA1132150 LBA3612500 LBA1132160B1 LF479Q1-1307015A LBA3612600 LF479Q1-1004200A LF479Q3-3701190A LBA1132160 LF479Q1-1008203A LF479Q1-1007011A LF481Q1-3729100A LF479Q3-3708130A LF479Q1-1009100A LBA1130310B1 LBA3614300B1 LBA3614300 LF479Q1-3765011A LF479Q1-1003017A LF481Q1-2303324A LF481Q1-1701331A LF479Q1-1004100A LF481Q1-2303323A LBA3705100 Но это сути не меняет. Все равно неправильно. В каждой группе одни и те же артикулы, а групп 4, а не 7 Добавлено спустя 29 минут 5 секунд: Вот, чуть изменил, просто для наглядности, разбил цикл на две части. Одна выводит нужное кол-во записей страниц, а другая часть, ответственная за парсинг х.. какую-то (то же, что и выше) Код (Text): <?php //проверяем валидность кода. Если будет показываться, то в php-коде ошибки нет echo 'code is valid<br/>'; // example of how to use advanced selector features include('../config.php'); include('../simple_html_dom.php'); //ПОЛУЧАЕМ СТАРТОВУЮ СТРАНИЦУ И ЗАПИСЫВАЕМ ЕЕ МАССИВ СТРАНИЦ, КОТОРЫЕ БУДЕМ ПАРСИТЬ $page_group=array(); $parse_start_page='http://relines.ru/catalog/lifan-smily-engine-and-transmission/'; $page_group[0]=$parse_start_page; $html=array(); $html = file_get_html($page_group[0]); $page_count = count ($html->find('a.b-catalog__paginator__item')); $pagin_page_adress = $html->find('a.b-catalog__paginator__item'); $element_article=$html->find('p.b-catalog__item__sku a'); $count_pars = count ($html->find('p.b-catalog__item__sku a')); for($i = 0; $i <= $page_count; $i++) { //ЗАПИСЫВАЕМ В АДРЕСА СТРАНИЦ И ПОДГРУЗИТЬ СОДЕРЖИМОЕ ВСЕХ СТРАНИЦ $page_group[$i+1]='http://relines.ru'.$pagin_page_adress[$i]->href; //ЕСЛИ РАСКОММЕНИТРОВАТЬ СТРОЧКУ НИЖЕ, ТО echo $page_group[$i].'<br/>'; ВЫВЕДЕТ АДРЕСА ДО 4-Й СТРАНИЦЫ //$html = file_get_html($page_group[$i]); //ВЫДАЕТ ВСЕ АДРЕСА ПРАВИЛЬНО echo $page_group[$i].'<br/><br/>'; } $count_pages=count($page_group); echo $page_group[7].'<br/>'; $element_article=$html->find('p.b-catalog__item__sku a'); for ($k=0; $k<$count_pages; $k++) { $html = file_get_html($page_group[$i]); for ($j=0; $j<=$count_pars;$j++){ echo $element_article[$j]->innertext.'<br/>'; } } ?> Добавлено спустя 39 минут 34 секунды: Попробовал такую конструкцию, все одно, х..ня: Код (Text): <?php //проверяем валидность кода. Если будет показываться, то в php-коде ошибки нет echo 'code is valid<br/>'; // example of how to use advanced selector features include('../config.php'); include('../simple_html_dom.php'); //ПОЛУЧАЕМ СТАРТОВУЮ СТРАНИЦУ И ЗАПИСЫВАЕМ ЕЕ МАССИВ СТРАНИЦ, КОТОРЫЕ БУДЕМ ПАРСИТЬ $page_group=array(); $parse_start_page='http://relines.ru/catalog/lifan-smily-engine-and-transmission/'; $page_group[0]=$parse_start_page; $html=array(); $html = file_get_html($page_group[0]); $page_count = count ($html->find('a.b-catalog__paginator__item')); $pagin_page_adress = $html->find('a.b-catalog__paginator__item'); $element_article=$html->find('p.b-catalog__item__sku a'); $count_pars = count ($html->find('p.b-catalog__item__sku a')); for($i = 0; $i <= $page_count; $i++) { //ЗАПИСЫВАЕМ В АДРЕСА СТРАНИЦ И ПОДГРУЗИТЬ СОДЕРЖИМОЕ ВСЕХ СТРАНИЦ $page_group[$i+1]='http://relines.ru'.$pagin_page_adress[$i]->href; //ЕСЛИ РАСКОММЕНИТРОВАТЬ СТРОЧКУ НИЖЕ, ТО echo $page_group[$i].'<br/>'; ВЫВЕДЕТ АДРЕСА ДО 4-Й СТРАНИЦЫ //$html = file_get_html($page_group[$i]); //ВЫДАЕТ ВСЕ АДРЕСА ПРАВИЛЬНО echo $page_group[$i].'<br/><br/>'; } $count_pages=count($page_group); echo $page_group[7].'<br/>'; $element_article=$html->find('p.b-catalog__item__sku a'); for ($k=0; $k<$count_pages; $k++) { $html = file_get_html($page_group[$i]); for ($j=0; $j<=$count_pars;$j++){ echo $element_article[$j*$k]->innertext.'<br/>'; } } ?>
Код ниже я изменил, требуется маленькая подсказка, а дальше я сам справлюсь: Код (Text): <?php //проверяем валидность кода. Если будет показываться, то в php-коде ошибки нет echo 'code is valid<br/>'; // example of how to use advanced selector features include('../config.php'); include('../simple_html_dom.php'); //ПОЛУЧАЕМ СТАРТОВУЮ СТРАНИЦУ И ЗАПИСЫВАЕМ ЕЕ МАССИВ СТРАНИЦ, КОТОРЫЕ БУДЕМ ПАРСИТЬ $page_group=array(); $parse_start_page='http://relines.ru/catalog/lifan-smily-engine-and-transmission/'; $page_group[0]=$parse_start_page; $html=array(); $html = file_get_html($page_group[0]); $page_count = count ($html->find('a.b-catalog__paginator__item')); $pagin_page_adress = $html->find('a.b-catalog__paginator__item'); $element_article=$html->find('p.b-catalog__item__sku a'); $count_art_arr = array(); for($i = 0; $i <= $page_count; $i++) { //ЗАПИСЫВАЕМ В АДРЕСА СТРАНИЦ И ПОДГРУЗИТЬ СОДЕРЖИМОЕ ВСЕХ СТРАНИЦ $page_group[$i+1]='http://relines.ru'.$pagin_page_adress[$i]->href; //ВЫДАЕТ ВСЕ АДРЕСА ПРАВИЛЬНО echo $page_group[$i].'<br/><br/>'; } for($k = 0; $k <= count($page_group); $k++) { $html[$k] = file_get_html($page_group[k]); echo count($html[$k]->find('p.b-catalog__item__sku a')).'<br/><br/>'; } echo count ($html->find('p.b-catalog__item__sku a')).'<br/><br/>'; ?> Вопрос: Консрукция ниже не работает. Вот как мне посчитать количество элементов p.b-catalog__item__sku a (которые я парсю), как их содержимое, вообще, записать в отдельный массив или БД? Я пробую по-разному не полчается. Код (Text): for($k = 0; $k <= count($page_group); $k++) { $html[$k] = file_get_html($page_group[k]); echo count($html[$k]->find('p.b-catalog__item__sku a')).'<br/><br/>'; }