1. Вступайте в наш Telegram чат: https://t.me/a_parser Нас уже 2600+ и мы растем!
    Скрыть объявление

Как упростить конструкцию фильтра

Тема в разделе "Техническая поддержка", создана пользователем vipuncle, 10 окт 2016.

  1. vipuncle

    vipuncle A-Parser Pro License
    A-Parser Pro

    Регистрация:
    7 апр 2015
    Сообщения:
    125
    Симпатии:
    42
    Нужно фильтровать по ~20 признакам, как это сделать проще?
    [​IMG]
     
  2. Support

    Support Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    16 мар 2012
    Сообщения:
    4.544
    Симпатии:
    2.163
    А какое условие фильтра должно быть?
     
  3. vipuncle

    vipuncle A-Parser Pro License
    A-Parser Pro

    Регистрация:
    7 апр 2015
    Сообщения:
    125
    Симпатии:
    42
    Как на скрине, мне нужно собрать урл с определенными доменами (cn|jp|kr|vn) и т.д.
     
  4. DeLaKroiX

    DeLaKroiX A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    25 дек 2015
    Сообщения:
    267
    Симпатии:
    96
    если я правильно понял, вместо contain string выбери regex match и регулярку туда впихни что-то вроде (http|https)://(.*)\.(com|cn|jp|com\.cn)/(.*) за правильность регулярки не уверен, не тестил.
     
  5. vipuncle

    vipuncle A-Parser Pro License
    A-Parser Pro

    Регистрация:
    7 апр 2015
    Сообщения:
    125
    Симпатии:
    42
  6. Support

    Support Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    16 мар 2012
    Сообщения:
    4.544
    Симпатии:
    2.163
    На скрине у вас следующий фильтр (на данный момент несколько фильтров работают между собой только в режиме И):
    • источник фильтра - $query, т.е. сам запрос
    • определяется вхождение строк .ir/ И .jp/ И .cn/
    Таким образом, если все строки будут в запросе, то результат будет выведен. Что очень маловероятно, т.к. вы используете парсер HTML::LinkExtractor, на вход подаете ссылки, и в одной ссылке сразу 3 доменные зоны врятли будут...
    Чтобы это сделать, вам нужно:
    • выбрать правильный источник фильтра. Например $intlinks, если вы хотите фильтровать внутренние ссылки.
    • определиться с логикой фильтра. Если стоит задача фильтровать на вхождение хотя бы одного признака, то можно сделать, как советовали выше: тип фильтра RegEx match, регулярка \.ir/|\.jp/|\.cn/
    В общей сложности задание будет выглядеть так:
    [​IMG]
    P.S. Уникализация включена для исключения повторов в примере.

    Рекомендуемые ссылки:
    http://a-parser.com/wiki/filter/
    http://a-parser.com/threads/1738/ - раздел Фильтры
     
    Forbidden и vipuncle нравится это.
  7. DeLaKroiX

    DeLaKroiX A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    25 дек 2015
    Сообщения:
    267
    Симпатии:
    96
    потому что в регулярке есть http или https, а также слеш в конце, а в тех линках, на которых ты её опробовал - нету(в природе не существует же таких линков, без протокола, но слеш при желании можно убрать), плюс сервис говорил о том, что надо слеши экранировать в регулярке, что я и сделал, после чего всё заработало: http://f4.s.qip.ru/8walhgNb.png :)
     
    vipuncle нравится это.

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