Макрос DUPIGNORE

Тема в разделе "Функции и интерфейс программы", создана пользователем Фёдор, 10 ноя 2014.

  1. Фёдор

    Фёдор Active Member Пользователи

    Регистрация:
    9 фев 2014
    Сообщения:
    167
    Здравствуйте!
    Делаю проект с использованием макроса DUPIGNORE, но в результате почему-то все равно получаю дублирование. Подскажите как решить проблему?
     

    Вложения:

  2. Root

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

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

    Делаем предпросмотр результатов парсинга контента, смотрим в лог выполнения функций и видим, что до выполнения макроса DUPIGNORE значения KEY пустые!
    Исправляем это, радуемся!
     
  3. Фёдор

    Фёдор Active Member Пользователи

    Регистрация:
    9 фев 2014
    Сообщения:
    167
    Сколько ни пытался разобраться в причине отсутствия данных для фильтрации между ...[KEY][/KEY]...- так ничего и не вышло. Может быть Вы сможете помочь?
    У меня в повторяющейся границе такая конструкция:
    Упрощенный вид:
    [DUPIGNORE][SAVETOFILE:Ссылки на интернет магазины.txt{add}{nodelete}{notcsv}][GRAN7][/SAVETOFILE][CSVCS][SAVETOFILE:айди-фильтры.txt{add}{nodelete}{notcsv}][GRAN8][/SAVETOFILE][DELETEKEY][KEY]<FILE=D:\Работа\Всё по парсингу\фриланс заказы\Яшамаркет\айди-фильтры.txt>[/KEY][/DUPIGNORE]

    Рассчитывал я при построении этой конструкции на то, что при работе конструкции в первом цикле она запишет в файл айди-фильтры.txt ключи, затем во втором цикле ...[KEY][/KEY]... загрузят ключи и конструкция уже отфильтрует контент по ним и допишет новые ключи в файл.
     
  4. Root

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

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

    Вложения:

  5. Фёдор

    Фёдор Active Member Пользователи

    Регистрация:
    9 фев 2014
    Сообщения:
    167
    Ура! Работает! Я уж было отчаялся)) Думал уже что не получится ничего с этим проектом.

    Возникла еще одна трудность:
    некоторые ссылки типа market-click2.yandex.ru/redir не конвертируются в конечные ссылки макросом [GETREDIRECT] поэтому мне пришлось эти ссылки передавать в другой проект, который будет ссылки типа
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    загружать из файла, а потом с помощью опции "работать с редиректными ссылками" в настройках ХТТП запросов, превращать в
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    , но беда в том, что перед началом работы программы со ссылками их нужно привести к виду
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    1 а сделать этого без скриптов я так понимаю нельзя? Или может есть какая-то возможность? Может Вы могли бы сделать фильтры ссылок, которые работали бы перед началом работы программы со ссылками во вкладке контент, или фильтры, обрабатывающие файл со ссылками, загружаемый с помощью автоматизации?
    Спасибо за помощь!
     
  6. Serheo

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

    Регистрация:
    13 окт 2018
    Сообщения:
    251
    Город:
    Москва
    Вот наверное сюда мой вопрос. Имею вот такую красивую конструкцию:
    Код:
    [EXTRACTPHONES][LENGTH]7-15][/LENGTH][EXCEPTHTMLANDSCRIPTS]<GETMORECONTENT><URL="<CD_DOCURL!>/contacts"><START="Телефон:"><STARTCOUNT="0"><END="</p>"><ENDCOUNT="0"><PARAMS="htmtotxt"></GETMORECONTENT>[/EXTRACTPHONES]
    Как это все красиво в [DUPIGNORE] обернуть и что в KEY вставить, чтобы дубли телефонов искались?

    И еще вопрос. По 2-м разным полям [DUPIGNORE] будет дубли искать или он только 1 раз может использоваться? Т.е. у меня есть колонка с телефонами и есть с e-meil. Надо, чтобы искались дубли по обеим колонкам.
     
  7. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    [DUPIGNORE] выполняется до макроса парсинга номеров. В вашем случае нужно использовать [DUPIGNORE2].

    Неважно, сколько разных видов данных вы будете вставлять в [DUPIGNORE], дубли то по всем ищутся. Навряд ли у вас e-mal и телефон будут иметь одинаковые значения, так что они друг-другу в макросе не помешают.
     
  8. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Макросом [REPLACE] добавить к каждой строке (к каждому телефону) конструкцию [DUPIGNORE2][KEY]...[/KEY][/DUPIGNORE2]

    Код:
    [REPLACE([LINEMODE]{get}|[DUPIGNORE2][KEY]{get}[/KEY][/DUPIGNORE2])][EXTRACTPHONES][LENGTH]10-10[/LENGTH][EXCEPTHTMLANDSCRIPTS][ALLOW][/ALLOW][/EXTRACTPHONES]<GETMORECONTENT><URL="[SELF]"><START=""><STARTCOUNT="0"><END=""><ENDCOUNT="0"><PARAMS=""></GETMORECONTENT>[/REPLACE]
     
  9. Serheo

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

    Регистрация:
    13 окт 2018
    Сообщения:
    251
    Город:
    Москва
    Очень красиво. Спасибо! Кстати хорошо бы это в мануал по DUPIGNORE закинуть. А то там только про границы, а про GETMORECONTENT вроде ни слова.

    А REPLACE с контейнером {get} он для компактности кода (типа в {get} все упаковать) или без него не заведется? Ну если всю конструкцию в меду [KEY][/KEY] поместить.

    И еще интересный вопрос. А можно ли провернуть какое-то условие, чтобы при срабатывании DUPIGNORE не ячейка бы обнулялась, а вообще вся строка бы не загружалась?
     
    Последнее редактирование: 17 май 2019
  10. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Фильтруется все содержимое макроса [DUPIGNORE]

    Что вы имели ввиду под строкой - для меня непонятно.
     
  11. Serheo

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

    Регистрация:
    13 окт 2018
    Сообщения:
    251
    Город:
    Москва
    Имеется ввиду строка в результатах парсинга. Т.е. надо, чтобы не только телефон в ячейке результатов удалился, но и не загрузились бы данные по всем ячейкам строки в таблице результатов текущего цикла.

    Другой вариант в DUPIGNORE добавить параметр вставки любого текста на место дубля. Чтоб можно было там прописать "дубль" или кому что нравится. Т.е. сейчас телефона нет и не понятно дубль это или просто на странице телефона не было, а с каким-то флагом в ячейке с телефоном точно будет ясно, что это дубль и можно будет, при желании, отсортировать данные по колонке с телефонами и удалить строки с дублями. Причем реализация этого варианта вроде простая, а вхождение текста с дублем можно использовать как ключ (сигнал) для удаления всей строки в результатах.
     
    Последнее редактирование: 18 май 2019
  12. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Замените файл Content Downloader.exe (в папке с программой) этим файлом:
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 84 постов.**
    Почитайте про [IFFILTERED] Ссылки недоступны для гостей
     
    Serheo нравится это.
  13. Serheo

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

    Регистрация:
    13 окт 2018
    Сообщения:
    251
    Город:
    Москва
    Оперативно, однако. Вапще крутяк! Спасибо ОГРОМНОЕ!!!

    И маленький вопрос еще. У нас DUPIGNORE жадный? Т.е. если [KEY]Иванов Иван[/KEY], то "Иванов Иван" удалится а "Иванов Петр" останется? Или оба удалятся?
     
    Последнее редактирование: 18 май 2019

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