Что такое "парсер"

Что такое парсер ?

На википедии это обозначено термином Синтаксический анализатор и звучит так:

Парсер (англиц. parser; от parse – анализ, разбор) или синтаксический анализатор — часть программы, преобразующей входные данные (как правило, текст) в структурированный формат. Парсер выполняет синтаксический анализ текста.

В нашем частном случае это можно сформулировать так:

Парсер - программа, выполняющая разбор входящей информации на элементы.

Переведу на разговорный - небольшая программка, которая автоматически загружает указанный ей сайт, страничка за страничкой, и на каждой страничке ищет и сохраняет в таблицу специфическую информацию, такую как изображение, наименование, цена и т.д.

Казалось бы, что сложного в выборе информации со странички ? Ведь любому видно - вот картинка, вот название, вот цена. Но мы должны понимать как выглядит страничка на самом деле. А на самом деле, страничка выглядит примерно так (вот фрагмент):

<span>Производитель:</span> <a href="https : //odiliya.ru/orly.html">ORLY</a><br /> <span>Модель:</span> 20323<br /> <span>Наличие:</span> Есть в наличии<br> <span>Отзывов написано:</span> <a onclick="$('a[href=\'#tab-review\']').trigger('click');" class="scroll-to-review-tab">0</a> <a onclick="$('a[href=\'#tab-review\']').trigger('click');" class="scroll-to-review-tab"><i style="margin: 0px 5px 0px 10px;" class="fa fa-pencil"></i>Написать</a><br> </div> <div class="inforight"> <p class="reiting"><img src="catalog/view/theme/default/image/stars-0.png" alt="0" /></p> </div> </div> <div class="price"> 213.12 р. <br /> </div> <div class="cart"> <div class="cart-inside"> <div class="wishlist"> <a class="w3" title="В закладки" onclick="addToWishList('8996');"></a> </div> <div class="cartbutton">

Согласитесь, не так наглядно как отображает браузер. Сможете найти в этой куче символов цену?

Как раз ваш браузер отвечает за перевод HTML-кода страницы в понятный для человека вид. А у парсера нет браузера, и страничку парсер видит в её исходном виде. И задача парсера по определенным признакам выделить интересующую информацию и сохранить её. В приведенном выше примере цена заключена в контейнер <div class="price"> 213.12 р. <br /> </div> и признаком является тег DIV класса PRICE. Найдя на страничке такой тег такого класса, парсер возьмет его содержимое, очистит от посторонних символов и сохранит значение "213,12". А еще на этой же страничке парсер должен найти и сохранить другие искомые значения по другим своеобразным признакам - название, ссылка на изображение, артикул, и т.д.

Чем более структурированный сайт, чем профессиональнее программисты, которые его создали, тем проще парсеру находить в нем данные. Бывают такие сайты, в которых информацию вытащить практически невозможно, например представьте что у приведенного примера цена не отмечена классом PRICE. как найти это поле, если тегов DIV на страничке может быть сотня? И из этой кучи надо вытащить именно цену.

Еще проблема возникает когда программисты сайта меняют дизайн. Представьте что программист добавил поле "новая цена". Соответствующим образом внес изменения в дизайн, старую цену оформил зачеркнутым шрифтом, а новую подсветил красным цветом. Сделал это программист с помощью добавления или изменения классов. Но парсер ищет сочетание именно DIV.PRICE, и все остальное игнорирует. Вот и проблема - цены в каталог попадают ошибочные, или не попадают вообще.

Теперь конкретно о парсерах нашего каталога. 

Парсер - узко-специализированная программка на сервере, для сбора информации с определенного сайта. Каждый парсер назван по имени сайта, для которого он предназначен.

Для запуска парсера используется специальная ссылка. Эта ссылка генерируется для каждого пользователя индивидуально, и регулярно меняется. Это сделано для затруднения злоупотреблений и невозможности запуска парсера вне нашего сайта.

Во время работы парсера вы можете наблюдать статус выполнения парсером работы. На страничке статуса работы вы можете увидеть сколько страничек парсер уже проанализировал, сколько всего страничек на сайте он нашел, сколько товаров обнаружил, примерно сколько времени работы осталось.

После запуска парсера остановить его может только администратор сайта. Вы можете спокойно выключать компьютер или закрывать страничку. Парсер будет работать без необходимости вашего наблюдения.

Результатом работы парсера является файл в формате XLSX. По завершения работы парсера, на страничке статуса выполнения вы увидите ссылку на этот файл. Или можно будет получить результат на страничке результатов