Парсер сайта М.Видео (загрузка каталога товаров, с проверкой наличия в заданных магазинах)

Задача: 

Загрузить список товаров с сайта mvideo.ru из заданных разделов
(список интересующих разделов задаётся в настройках, товары каждого раздела выводятся на отдельный лист),
и сформировать на листе Excel таблицу со столбцами:
название товара, код товара, цена, доступность (наличие товара в 5 заданных магазинах), доставка на дом, старая цена (без скидки).

Описание: 

При запуске парсера, автоматически выполняется набор действий «Parser_Start», в котором записана команда создания нового файла Excel:
это действие «Создать новую книгу Excel» с параметром \files\{ParserName} {time=DD.MM.YYYY HH-NN-SS}.xls
(путь задаётся относительно папки с программой, подпапка files будет создана автоматически, файл получит имя www.mvideo.ru 13.11.2014 05-40-50.xls)

Для каждого из исходных значений вида НазваниеРаздела=СсылкаНаСтраницуРаздела, создаётся новый лист с названием НазваниеРаздела,
и производится загрузка основной страницы, и всех дополнительных страниц (т.к. все товары раздела не умещаются на одну страницу выдачи).
Это выполняется при помощи действия «Загрузить ИСХОДНЫЙ КОД веб-страницы» с параметром «Загружать все страницы результатов», равным No
(ссылки на дополнительные страницы отличаются от ссылки на первую страницу добавлением параметра No вида ...&No=48...&No=72 и т.д.)

После загрузки нескольких веб страниц (массив из нескольких значений, каждое из которых — HTML-код страницы результатов),
парсер выполняет поиск ссылок на товары.
Для каждой из найденных ссылок, выполняется загрузка данных с выводом результатов на лист Excel.

Среди особенностей данного парсера, — проверка наличия товара в 5 заданных магазинах.
У каждого товара на странице есть список из десятков магазинов, с указаним наличия, и кнопки «Выбрать» (кнопки может и не быть, как и нужного магазина)
Каждый магазин имеет уникальный код вида S077, который присутствует в ссылке на магазин на странице товара.
На вкладке «Дополнительно» настроены 5 аналогичных действий (отличающихся только кодом магазина), которые ищут в HTML коде страницы ссылку на конкретный магазин,
проверяют наличие кнопки «Выбрать», и записывают в переменную shop1...shop5 одно из значений +, - или 0
(+ означает наличие в магазине, - отсутствие в магазине, а 0 — наличие магазина в списке, но без кнопки «Выбрать») .
Перед выводом на лист, в столбец «Доступность», парсер сначала выполняет наборы действий «Магазин1...Магазин5», а потом склеивает через пробел значения переменных shop1...shop5
(значения в переменные заносятся в процессе выполнения наборов действий «Магазин1...Магазин5»)

Комментарии

Это потому что сайт поменялся.
Когда я настраивал (полгода назад), ссылки на доп страницы имели вид ...?xxx=yyy&No=7
а сейчас на сайте другая адресация: .../page=7

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

Не парсит больше 24 товаров

Для каждого из исходных значений вида НазваниеРаздела=СсылкаНаСтраницуРаздела, создаётся новый лист с названием НазваниеРаздела,
и производится загрузка основной страницы, и всех дополнительных страниц (т.к. все товары раздела не умещаются на одну страницу выдачи).
Это выполняется при помощи действия «Загрузить ИСХОДНЫЙ КОД веб-страницы» с параметром «Загружать все страницы результатов», равным No
(ссылки на дополнительные страницы отличаются от ссылки на первую страницу добавлением параметра No вида ...&No=48, ...&No=72 и т.д.)

Это не работает, больше одной страницы не парсит.

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
 __  __  _  _              __      __         
\ \/ / | || | __ __ / /_ / _| __ __
\ / | || |_ \ \ / / | '_ \ | |_ \ \ / /
/ \ |__ _| \ V / | (_) | | _| \ V /
/_/\_\ |_| \_/ \___/ |_| \_/
Введите код, изображенный в стиле ASCII-арт.