Сегодня я приведу вам в пример, который возможно понадобиться начинающим парсерам и возможно вы найдете в нем ценную информацию. В комментариях очень хотелось бы увидеть возможные изменения для упрощения задачи, так что всегда рад услышать ваши мнения.
Передо мной стояла задача заполнить интернет магазин товарами в количестве свыше 50 тыс наименований. Оригиналы товаров лежали на сайтах поставщиков.
Особо заморачиваться с кодом и решением я не стал, поэтому сделал все максимально просто и быстро.
Прикрепленные файлы буду выкладывать на проекте моих друзей и партнеров 2file.ru Будьте уверены что все ссылки всегда будут действующими и вы всегда сможете скачать любой файл из данной инструкции. +размер файлов не ограничен, нет времени ожидания и нет рекламмы.
Первым делом я решил скачать полностью сайт себе чтобы в дальнейшем было проще работать с ним.
Для Windows нам потребуется программа wget (КАЧАЕМ)
Распаковываем например на диск С и для удобства переименовываем в wget.
Далее нажимаем пуск-выполнить-cmd и там вводим CD C:\wget\. Далее нам нужно запустить команду wget.exe -c -p -r -l0 -np -N -k -nv АДРЕС САЙТА 2>wget.log. Описание команд -c -p -r -l0 -np -N -k -nv можно подробно почитать ТУТ. Нажимаем enter и начинается скачивание. В папке wget появляется папка с названием сайта, куда сливается сайт. ВНИМАНИЕ, при больших объемах, сайт может скачиваться даже несколько дней.
.............................................Прошло несколько дней…
Вот мы и дождались загрузки сайта на наш компьютер. В моем случаи в корне находились страницы с подробным описанием товаров, так что буду следовать отсюда.
Нам понадобится установленный на компьютере сервер apache+php. Для удобства и быстроты настройки можно использовать например xampp, который можно взять бесплатно на ЭТОМ сайте, где так-же приведен процесс инсталяции.
Ок, теперь у нас стоит апач, есть скачанный сайт. Далее для удобства я перенес все скачанные странички в папку xampp для дальнейшей работы с ними. Чтобы не усложнять код, я переименовал все страницы в порядковые номера чтобы получилось 1.html, 2.html… и так далее. Сделать это очень просто. Например через total commender в меню файлы-групповое переименование. Далее в папке с переименованными страницами я создал index.php файл. Теперь начнем разбираться в коде:
Основа кода это
<?php
Первой строчкой я указываю на открытие 132.html, в котором будет осуществляться выборка данных.
Открыв любую скачанную страницу, мы видим что интересующая нас информация находится между тегами.
Один из моих примеров это
preg_match_all( '#(.+?.)#is', $html, $matches );
Передо мной стояла задача заполнить интернет магазин товарами в количестве свыше 50 тыс наименований. Оригиналы товаров лежали на сайтах поставщиков.
Особо заморачиваться с кодом и решением я не стал, поэтому сделал все максимально просто и быстро.
Прикрепленные файлы буду выкладывать на проекте моих друзей и партнеров 2file.ru Будьте уверены что все ссылки всегда будут действующими и вы всегда сможете скачать любой файл из данной инструкции. +размер файлов не ограничен, нет времени ожидания и нет рекламмы.
Первым делом я решил скачать полностью сайт себе чтобы в дальнейшем было проще работать с ним.
Для Windows нам потребуется программа wget (КАЧАЕМ)
Распаковываем например на диск С и для удобства переименовываем в wget.
Далее нажимаем пуск-выполнить-cmd и там вводим CD C:\wget\. Далее нам нужно запустить команду wget.exe -c -p -r -l0 -np -N -k -nv АДРЕС САЙТА 2>wget.log. Описание команд -c -p -r -l0 -np -N -k -nv можно подробно почитать ТУТ. Нажимаем enter и начинается скачивание. В папке wget появляется папка с названием сайта, куда сливается сайт. ВНИМАНИЕ, при больших объемах, сайт может скачиваться даже несколько дней.
.............................................Прошло несколько дней…
Вот мы и дождались загрузки сайта на наш компьютер. В моем случаи в корне находились страницы с подробным описанием товаров, так что буду следовать отсюда.
Нам понадобится установленный на компьютере сервер apache+php. Для удобства и быстроты настройки можно использовать например xampp, который можно взять бесплатно на ЭТОМ сайте, где так-же приведен процесс инсталяции.
Ок, теперь у нас стоит апач, есть скачанный сайт. Далее для удобства я перенес все скачанные странички в папку xampp для дальнейшей работы с ними. Чтобы не усложнять код, я переименовал все страницы в порядковые номера чтобы получилось 1.html, 2.html… и так далее. Сделать это очень просто. Например через total commender в меню файлы-групповое переименование. Далее в папке с переименованными страницами я создал index.php файл. Теперь начнем разбираться в коде:
Основа кода это
<?php
$html = file_get_contents( '132.html' );
preg_match_all( '#<Тег начало>(.+?.)<тег конец>#is', $html, $matches );
foreach ( $matches[1] as $value ) echo $value.'<br>';
?>
Первой строчкой я указываю на открытие 132.html, в котором будет осуществляться выборка данных.
Открыв любую скачанную страницу, мы видим что интересующая нас информация находится между тегами.
Один из моих примеров это
preg_match_all( '#(.+?.)#is', $html, $matches );
Далее осуществляется вывод полученных данных на экран и спуск на строчку вниз br.
Для выдирания нескольких результатов из одной страницы, можно использовать код на подобии:
<?php
$html = file_get_contents( '132.html' );
preg_match_all( '#<Тег начало>(.+?.)<тег конец>#is', $html, $matches );
preg_match_all( '#<Тег начало>(.+?.)<тег конец>#is', $html, $matches1 );
preg_match_all( '#<Тег начало>(.+?.)<тег конец>#is', $html, $matches2 );
foreach ( $matches[1] as $value ) echo $value.'<, >';
foreach ( $matches1[1] as $value ) echo $value.'<, >';
foreach ( $matches2[1] as $value ) echo $value.'<br>';
?>
Должно получится что-то вроде (значение1, значение2, значение3 <br>)
Теперь немного дополним наш код чтобы прогнать все наши скачанные страницы. Решил сделать с помощью цикла и получилось что-то вроде этого:
<?php
set_time_limit(100000000000000000); //Установка лимита ожидания апача
$d = 1; //стартовое число отсчета
while($d <= 10002) //последнее число отсчета
{
$html = file_get_contents( ''. $d .'.html' );
preg_match_all( '#<Тег начало>(.+?.)<тег конец>#is', $html, $matches );
preg_match_all( '#<Тег начало>(.+?.)<тег конец>#is', $html, $matches1 );
preg_match_all( '#<Тег начало>(.+?.)<тег конец>#is', $html, $matches2 );
foreach ( $matches[1] as $value ) echo $value.'<#>';
foreach ( $matches1[1] as $value ) echo $value.'<#>';
foreach ( $matches2[1] as $value ) echo $value.'<br>';
$d++;
}
?>
Отлично, теперь мы видим что-то вроде этого:
значение#значение#значение
значение#значение#значение
Для удобства дальнейшей работы я использовал #. Теперь копируем все что получилось, загоняем в excel, нажимаем данные-текст по столбцам и ставим # в качестве разделителя столбцов. Отлично, мы получили таблицу с результатами нашего парсинга. УРА
Дальнейшая работа зависит от вашей фантазии и цели. Спасибо за внимания, надеюсь на инвайт.
$html = file_get_contents( '132.html' );
preg_match_all( '#<Тег начало>(.+?.)<тег конец>#is', $html, $matches );
preg_match_all( '#<Тег начало>(.+?.)<тег конец>#is', $html, $matches1 );
preg_match_all( '#<Тег начало>(.+?.)<тег конец>#is', $html, $matches2 );
foreach ( $matches[1] as $value ) echo $value.'<, >';
foreach ( $matches1[1] as $value ) echo $value.'<, >';
foreach ( $matches2[1] as $value ) echo $value.'<br>';
?>
set_time_limit(100000000000000000); //Установка лимита ожидания апача
$d = 1; //стартовое число отсчета
while($d <= 10002) //последнее число отсчета
{
$html = file_get_contents( ''. $d .'.html' );
preg_match_all( '#<Тег начало>(.+?.)<тег конец>#is', $html, $matches );
preg_match_all( '#<Тег начало>(.+?.)<тег конец>#is', $html, $matches1 );
preg_match_all( '#<Тег начало>(.+?.)<тег конец>#is', $html, $matches2 );
foreach ( $matches[1] as $value ) echo $value.'<#>';
foreach ( $matches1[1] as $value ) echo $value.'<#>';
foreach ( $matches2[1] as $value ) echo $value.'<br>';
$d++;
}
?>