Логика перед парсингом

Тема в разделе "Решение различных задач по парсингу", создана пользователем strateg2010, 12 дек 2020.

  1. strateg2010

    strateg2010 Active Member Пользователи

    Регистрация:
    12 фев 2018
    Сообщения:
    181
    Город:
    порт
    Всем привет! Есть достаточно популярный сайт в РБ (Беларусь) 7745.by как по мне и достаточно сложный для парсинга. Я бы хотел узнать ваше мнение как лучше сделать.
    и так что мы имеем:
    1. есть разные товары, одиночные и типа с вариантами выбора:
    Ссылки недоступны для гостей - это первый вариант, тут обычный товар, нету варианта выбора, но есть такая ссылка:
    Ссылки недоступны для гостей - с той лишь разницей, что добавляется в конце #pidproduct
    если попробовать парсить 1 ссылку и следом вторую, то со второй ссылки соберется данные из первой, короче дубль. поковырявшись немного в инспекторе браузера, обнаружил такую ссыль:

    Ссылки недоступны для гостей - это получается настоящая ссылка товара
    если сложить 2 + 2 становится понятно, что 191361 - это айди товара и в таком варианте парсить отдельные товары можно. но возник вопрос, возможно ли при формировании ссылок подобные страницы (с #pidproduct) автоматом менять на такие ссылки: Ссылки недоступны для гостей ?
    P.S. вчера блока "Цена и описание комплекта" не было. Разобрался, если товара нет в наличии, то блок выбора пропадает.
    Далее товары с вариантами выбора:
    Ссылки недоступны для гостей
    - здесь уже много разных вариантов, при выборе каждого меняется вся информация, кроме сео тегов (h1 меняется)
    Ссылки недоступны для гостей - здесь аж 3 варианта, но думаю самый важный самый первый.
    опять же все работает, по 1 варианту. возможно ли эти ссылки менять на ссылки из 1 вопроса, плюс каким образом можно отметить, что у этого товара есть варианты выбора? ну или как их объединить?
    если посмотреть в коде, где формируется список "опций/вариантов", то там есть такое:
    HTML:
    <div class="product__logical-block product__logical-block--kit">
                                                <div class="kit" data-urls="{&quot;440&quot;:&quot;\/product\/uroven-startul-profi-st3540#p440&quot;,&quot;441&quot;:&quot;\/product\/uroven-startul-profi-st3540#p441&quot;,&quot;442&quot;:&quot;\/product\/uroven-startul-profi-st3540#p442&quot;,&quot;443&quot;:&quot;\/product\/uroven-startul-profi-st3540#p443&quot;,&quot;444&quot;:&quot;\/product\/uroven-startul-profi-st3540#p444&quot;,&quot;446&quot;:&quot;\/product\/uroven-startul-profi-st3540#p446&quot;,&quot;445&quot;:&quot;\/product\/uroven-startul-profi-st3540#p445&quot;}">
                                                        </div>
                        <div class="kit js-kit-block" data-titles="{&quot;440&quot;:&quot;\u0423\u0440\u043e\u0432\u0435\u043d\u044c STARTUL Profi ST3540 400 \u043c\u043c (ST3540-040)&quot;,&quot;441&quot;:&quot;\u0423\u0440\u043e\u0432\u0435\u043d\u044c STARTUL Profi ST3540 600 \u043c\u043c (ST3540-060)&quot;,&quot;442&quot;:&quot;\u0423\u0440\u043e\u0432\u0435\u043d\u044c STARTUL Profi ST3540 800 \u043c\u043c (ST3540-080)&quot;,&quot;443&quot;:&quot;\u0423\u0440\u043e\u0432\u0435\u043d\u044c STARTUL Profi ST3540 1000 \u043c\u043c (ST3540-100)&quot;,&quot;444&quot;:&quot;\u0423\u0440\u043e\u0432\u0435\u043d\u044c STARTUL Profi ST3540 1200 \u043c\u043c (ST3540-120)&quot;,&quot;446&quot;:&quot;\u0423\u0440\u043e\u0432\u0435\u043d\u044c STARTUL Profi ST3540 2000 \u043c\u043c (ST3540-200)&quot;,&quot;445&quot;:&quot;\u0423\u0440\u043e\u0432\u0435\u043d\u044c STARTUL Profi ST3540 1500 \u043c\u043c (ST3540-150)&quot;}" data-urls="{&quot;440&quot;:&quot;\/product\/uroven-startul-profi-st3540#p440&quot;,&quot;441&quot;:&quot;\/product\/uroven-startul-profi-st3540#p441&quot;,&quot;442&quot;:&quot;\/product\/uroven-startul-profi-st3540#p442&quot;,&quot;443&quot;:&quot;\/product\/uroven-startul-profi-st3540#p443&quot;,&quot;444&quot;:&quot;\/product\/uroven-startul-profi-st3540#p444&quot;,&quot;446&quot;:&quot;\/product\/uroven-startul-profi-st3540#p446&quot;,&quot;445&quot;:&quot;\/product\/uroven-startul-profi-st3540#p445&quot;}"><div class="kit__title  ">Длина, м:</div><div class="kit__option-wrapper ">
                                <div class="kit__option-container " data-paramid="1092"><div class="kit__option  js-kit__option " data-kit-choosed="true" data-prod-ids="440">0,4</div><div class="kit__option  js-kit__option " data-prod-ids="441">0,6</div><div class="kit__option  js-kit__option " data-prod-ids="442">0,8</div><div class="kit__option  js-kit__option " data-prod-ids="443">1</div><div class="kit__option  js-kit__option " data-prod-ids="444">1,2</div><div class="kit__option  js-kit__option " data-prod-ids="445">1,5</div><div class="kit__option  js-kit__option " data-prod-ids="446">2</div></div>
                            </div><div class="kit__title kit--prod-code " style="display: none;">Товары с выбранными характеристиками:</div><div class="kit__option-wrapper kit--prod-code" style="display: none;">
                                <div class="kit__option-container " data-paramid="kod"><div class="kit__option  js-kit__option kit--prod-code" data-kit-choosed="true" data-prod-ids="440" data-kit-availability="true">Арт. ST3540-040</div><div class="kit__option  js-kit__option kit--prod-code" data-prod-ids="441" data-kit-availability="false">Арт. ST3540-060</div><div class="kit__option  js-kit__option kit--prod-code" data-prod-ids="442" data-kit-availability="false">Арт. ST3540-080</div><div class="kit__option  js-kit__option kit--prod-code" data-prod-ids="443" data-kit-availability="false">Арт. ST3540-100</div><div class="kit__option  js-kit__option kit--prod-code" data-prod-ids="444" data-kit-availability="false">Арт. ST3540-120</div><div class="kit__option  js-kit__option kit--prod-code" data-prod-ids="445" data-kit-availability="false">Арт. ST3540-150</div><div class="kit__option  js-kit__option kit--prod-code" data-prod-ids="446" data-kit-availability="false">Арт. ST3540-200</div></div>
                            </div></div>                </div>
    из того что понимаю: можно взять айди варианта/товара и попасть на страницу из 1 варианта.
    Вот такое сокровище нарыл, теперь не могу собрать воедино все в голове и реализовать грамотно, что бы не потерять данные и связи между ними.
    В дальнейшем собираюсь заливать на сайт, на опенкарт, в специальный модуль, который по такому же принципу связывает товары. Каким-то образом мне нужно так же передать в тот модуль. скорей всего айди товара родителя, айди товаров для добавления таких связок.
     
    Последнее редактирование: 12 дек 2020

Поделиться этой страницей