Взятие повторяющихся границ

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

  1. Serheo

    Serheo Well-Known Member Пользователи

    Регистрация:
    13 окт 2018
    Сообщения:
    252
    Город:
    Москва
    Здравствуйте! Помогите решить задачку, пожалуйста.
    Есть такой код:
    HTML:
    <div id="thumbnail-qv" class="row js-qv-mask"><div class="product-images js-qv-product-images"><div class="thumb-container"> <label for="color-8" id="dc-8" data-color="8"> <img class="thumb js-thumb selected " src="https://www.italiamoda.pl/91094-home_default/dzianinowa-sukienka-z-golfem-o-grubym-splocie.jpg" alt="" title="" width="310" > </label></div><div class="thumb-container"> <label for="color-8" id="dc-8" data-color="8"> <img class="thumb js-thumb selected " src="https://www.italiamoda.pl/91096-home_default/dzianinowa-sukienka-z-golfem-o-grubym-splocie.jpg" alt="" title="" width="310" > </label></div><div class="thumb-container"> <label for="color-8" id="dc-8" data-color="8"> <img class="thumb js-thumb selected " src="https://www.italiamoda.pl/91095-home_default/dzianinowa-sukienka-z-golfem-o-grubym-splocie.jpg" alt="" title="" width="310" > </label></div><div class="thumb-container"> <label for="color-8" id="dc-8" data-color="8"> <img class="thumb js-thumb selected " src="https://www.italiamoda.pl/91097-home_default/dzianinowa-sukienka-z-golfem-o-grubym-splocie.jpg" alt="" title="" width="310" > </label></div><div class="thumb-container"> <label for="color-8" id="dc-8" data-color="8"> <img class="thumb js-thumb selected " src="https://www.italiamoda.pl/91098-home_default/dzianinowa-sukienka-z-golfem-o-grubym-splocie.jpg" alt="" title="" width="310" > </label></div><div class="thumb-container"> <label for="color-32" id="dc-32" data-color="32"> <img class="thumb js-thumb " src="https://www.italiamoda.pl/91105-home_default/dzianinowa-sukienka-z-golfem-o-grubym-splocie.jpg" alt="" title="" width="310" > </label></div><div class="thumb-container"> <label for="color-32" id="dc-32" data-color="32"> <img class="thumb js-thumb " src="https://www.italiamoda.pl/91103-home_default/dzianinowa-sukienka-z-golfem-o-grubym-splocie.jpg" alt="" title="" width="310" > </label></div><div class="thumb-container"> <label for="color-32" id="dc-32" data-color="32"> <img class="thumb js-thumb " src="https://www.italiamoda.pl/91104-home_default/dzianinowa-sukienka-z-golfem-o-grubym-splocie.jpg" alt="" title="" width="310" > </label></div><div class="thumb-container"> <label for="color-32" id="dc-32" data-color="32"> <img class="thumb js-thumb " src="https://www.italiamoda.pl/91106-home_default/dzianinowa-sukienka-z-golfem-o-grubym-splocie.jpg" alt="" title="" width="310" > </label></div><div class="thumb-container"> <label for="color-15" id="dc-15" data-color="15"> <img class="thumb js-thumb " src="https://www.italiamoda.pl/91101-home_default/dzianinowa-sukienka-z-golfem-o-grubym-splocie.jpg" alt="" title="" width="310" > </label></div><div class="thumb-container"> <label for="color-15" id="dc-15" data-color="15"> <img class="thumb js-thumb " src="https://www.italiamoda.pl/91099-home_default/dzianinowa-sukienka-z-golfem-o-grubym-splocie.jpg" alt="" title="" width="310" > </label></div><div class="thumb-container"> <label for="color-15" id="dc-15" data-color="15"> <img class="thumb js-thumb " src="https://www.italiamoda.pl/91100-home_default/dzianinowa-sukienka-z-golfem-o-grubym-splocie.jpg" alt="" title="" width="310" > </label></div><div class="thumb-container"> <label for="color-15" id="dc-15" data-color="15"> <img class="thumb js-thumb " src="https://www.italiamoda.pl/91102-home_default/dzianinowa-sukienka-z-golfem-o-grubym-splocie.jpg" alt="" title="" width="310" > </label></div><div class="thumb-container"> <label for="color-9" id="dc-9" data-color="9"> <img class="thumb js-thumb " src="https://www.italiamoda.pl/91107-home_default/dzianinowa-sukienka-z-golfem-o-grubym-splocie.jpg" alt="" title="" width="310" > </label></div><div class="thumb-container"> <label for="color-9" id="dc-9" data-color="9"> <img class="thumb js-thumb " src="https://www.italiamoda.pl/91110-home_default/dzianinowa-sukienka-z-golfem-o-grubym-splocie.jpg" alt="" title="" width="310" > </label></div><div class="thumb-container"> <label for="color-9" id="dc-9" data-color="9"> <img class="thumb js-thumb " src="https://www.italiamoda.pl/91108-home_default/dzianinowa-sukienka-z-golfem-o-grubym-splocie.jpg" alt="" title="" width="310" > </label></div><div class="thumb-container"> <label for="color-9" id="dc-9" data-color="9"> <img class="thumb js-thumb " src="https://www.italiamoda.pl/91109-home_default/dzianinowa-sukienka-z-golfem-o-grubym-splocie.jpg" alt="" title="" width="310" > </label></div><div class="thumb-container"> <label for="color-9" id="dc-9" data-color="9"> <img class="thumb js-thumb " src="https://www.italiamoda.pl/91111-home_default/dzianinowa-sukienka-z-golfem-o-grubym-splocie.jpg" alt="" title="" width="310" > </label></div></div></div>
    Задача разбить его повторяющимися границами, чтобы в каждую границу попали строки с одинаковым data-color="N". Как это можно сделать?
     
  2. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.

    Мне непонятно, что требуется.

    Что за строки, если вы привели в пример HTML код, состоящий из одной строки.
    Что значит "попали строки" с одинаковыми data-color.

    Попробуйте изъясниться так, чтобы было понятно.

    Лучше сделать пример желаемого результата.
     
  3. Serheo

    Serheo Well-Known Member Пользователи

    Регистрация:
    13 окт 2018
    Сообщения:
    252
    Город:
    Москва
    HTML:
    <label for="color-8" id="dc-8" data-color="8"> <img class="thumb js-thumb selected " src="https://www.italiamoda.pl/91094-home_default/dzianinowa-sukienka-z-golfem-o-grubym-splocie.jpg" alt="" title="" width="310" > </label></div><div class="thumb-container">
    
    <label for="color-8" id="dc-8" data-color="8"><img class="thumb js-thumb selected " src="https://www.italiamoda.pl/91096-home_default/dzianinowa-sukienka-z-golfem-o-grubym-splocie.jpg" alt="" title="" width="310" > </label></div><div class="thumb-container">
    
    <label for="color-32" id="dc-32" data-color="32"> <img class="thumb js-thumb " src="https://www.italiamoda.pl/91105-home_default/dzianinowa-sukienka-z-golfem-o-grubym-splocie.jpg" alt="" title="" width="310" > </label></div><div class="thumb-container">
    
    <label for="color-32" id="dc-32" data-color="32"> <img class="thumb js-thumb " src="https://www.italiamoda.pl/91103-home_default/dzianinowa-sukienka-z-golfem-o-grubym-splocie.jpg" alt="" title="" width="310" > </label></div><div class="thumb-container">
    
    <label for="color-32" id="dc-32" data-color="32"> <img class="thumb js-thumb " src="https://www.italiamoda.pl/91104-home_default/dzianinowa-sukienka-z-golfem-o-grubym-splocie.jpg" alt="" title="" width="310" > </label></div><div class="thumb-container">
    Код разбил на строки и упростил. Надо, чтобы строки с label for="color-8" попали в один цикл повторяющейся границы, а строки с label for="color-32" - в другой. Блоков с разными "label for="color" может быть разное количество как и строк в каждом блоке. Изначально код идет одной строкой как было в первом посте, т.е. фактически это не строки, а куски кода.

    А задача в том, чтобы картинки попали в строки таблицы к соответствующим цветам. Порядок цветов и номеров в "label for="color-" совпадает.

    Есть идея удалить дубли вхождений "label for="color-", чтобы осталось только 1 первое вхождение и брать его в качестве границы, но как удалить эти дубли пока не придумал.
     
    Последнее редактирование: 7 дек 2020
  4. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Не вижу решения данного вопроса имеющимся функционалом.

    Если только написать для этого специальную функцию. Могу сделать это за 3000 рублей. Если интересно пишите в Whatsap
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 100 постов.**
     
  5. Serheo

    Serheo Well-Known Member Пользователи

    Регистрация:
    13 окт 2018
    Сообщения:
    252
    Город:
    Москва
    Не, все таки на эту задачу функционала хватает. Данный код для начала надо взять в обычную границу и в редакторе поиска/замен вставить код:
    Код:
    <label for|{br}<label for
    <img class|{br}<label for
    [DELSTRDUP]
    <label for="color|<ZACEP><label for="color
    <ZACEP>|[ONCE]
    {textend}|<ZACEP>
    После чего данные блоки можно легко взять в повторяющиеся границы.
     
    Root нравится это.

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