Перейти к основному содержимому

Использование регулярных выражений

Общие сведения

В A-Parser применяются Perl/JavaScript-совместимые регулярные выражения, которые можно использовать:

Подробную документацию по регулярным выражениям можно найти в следующих источниках:

В A-Parser существует возможность обрабатывать любой результат с помощью регулярного выражения, для этого используется опция Использовать регулярку:

Опция Использовать регулярку

Особенности использования и флаги

  • Регулярные выражения записываются без ограничителей //
  • Поддерживаются следующие флаги:
    • i - поиск без учета регистра символов
    • s - точка включает все символы, включая перенос строк
    • g - глобальный поиск или замена

Дополнительно возможно указать флаг в самой регулярке, например поиск слова test в каждой строке всего текста (или кода страницы, смотря к чему применяется регулярка) с использованием флага m (multi line - символы ^ и $ работают как начало и конец строки соответственно):

(?m)^(.+?test.+?)$

Извлечение произвольной информации

Описание работы с регулярными выражениями в редакторе заданий

С помощью опции Использовать регулярку или Конструктора результатов возможно использование регулярных выражений для извлечения произвольной информации из результатов парсинга, например из исходного кода HTML страниц или уже из подготовленных результатов

  • В качестве Применить к выбирается результат от парсера, это может быть простой результат или массив
  • Регулярное выражение указывается без ограничителей, следом есть возможность указать флаг
  • В Тип результата указывается тип результата - Flat (простой результат) или Array (массив). Если в качестве исходного результата выбран массив или используется флаг g регулярного выражения то результат всегда будет сохраняться в массив. В поле Имя указывается имя массива
  • Каждая захватывающая скобка регулярного выражения может быть сохранена как отдельный элемент, название элемента записывается в соответствующее поле $1 to, $2 to... - где цифра обозначает номер захватывающей скобки
  • В поле Регулярка можно использовать шаблонизатор, что позволяет использовать запрос как часть регулярного выражения

Созданные новые результаты можно использовать при форматировании результатов, в конструкторе результатов, в фильтрации и уникализации результатов или в следующей опции Использовать регулярку. Данная опция схожа с конструктором результатов при использовании RegEx Match

Пример парсинга ссылок на картинки из исходного HTML кода

Чтобы решить эту задачу используем парсер Net::HTTPNet::HTTP для получения исходного кода страницы. Применяем к $data (скачанная страница) регулярное выражение с флагами isg, результат сохраняем в элементы src массива images. В формате результата указываем выводить все элементы src через перенос строки.

В итоге парсинга для запроса http://a-parser.com/ в файле результата получим следующий список:

/img/lang/en.png  
/img/lang/ru.png
img/[email protected]
https://files.a-parser.com/img/site/tour_ru/V1qpV.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_1_all_parsers_list.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_1_quick_task.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_2_task_editor_easy.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_3_task_editor_analyze_domains.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_4_task_editor_parse_emails.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_5_queue_fast_google.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_6_queue_spyserp.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_7_javascript_parser.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_8_scheduler.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_9_settings.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_10_proxies.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_11_templates.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_12_task_tester.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_13_parser_test.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_14_api.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_15_resources.png
data/avatars/s/0/12.jpg?1507557563
data/avatars/s/0/12.jpg?1507557563
data/avatars/s/13/13392.jpg?1570706020
data/avatars/s/16/16560.jpg?1586782475
data/avatars/s/1/1240.jpg?1537376153
styles/uix/xenforo/avatars/avatar_s.png
data/avatars/s/0/371.jpg?1412969226
styles/uix/xenforo/avatars/avatar_s.png
//mc.yandex.ru/watch/26891250
Скачать пример

Как импортировать пример в А-Парсер


eJxtVN9v2jAQ/l8sJArqYH3YS7Stokhomxgwmj5BJlnkyLz612yHFUX533d2Egfa
vYDv7rvvvvNdXBFH7bPdGLDgLEl2FdHhTBKSw5GW3JFboqmxYHx4R1bgkuRLmm7Q
HxEVcWcNmHMorVNiC7ZJNM0BuaijwS7gBc2PTBS7n5+zsTWH/d6OP/mf3XBPspvJ
+H4UTh08bZiZLSJh66LG0DM6w/+KigATtAAbkV4zwSIkq3uR6gTGsBwQxXK0j8oI
6kwn+kR56WGDhmvShG+GgyBWDkekzrJYYBGiHq7vJu3dxeAjPUGqfAnGoXcv0Gr1
DvBmwEe7MqOJe/EMNM+ZY0pS3lTwnfRVnyT7E0RKhVg8GgZ2YZRAl4NA4J3nTt2O
DIJNkKIMuT+aHJIcKbdwSyxKXVAUkr+OMAeGOmXW2utBf0WUnHG+hBPwHhb4H0rG
c1yV2RGTvraJ/4es33DUsb3LUjisvwY1RJZgPay/91m5WqqiuwzOBHNo27kqpR/M
e3Q+A+h4ZysPE8pALNMyt9Xxa9Ag/Wb0I5vp3nXVxtVYrp0HJY+sWLfb1iFLmeIn
t5ZzJTQH35csOcexWNj26zGz7Ri80Qt8nTwPJa4+VqcUt98eG6naMFy/D16gwJu8
rNpSHijnT9vlZYT0K4XGL+e0TaZT+q55BiYHJabEJzooFK4UtlVn8ZGIT0l18VQk
VY1j+m03Dcb35BHow8uxOAOS3NX/AFJvlP8=

Конструктор регулярных выражений

Начиная с версии 1.2.78 был добавлен Конструктор регулярных выражений.

Найти его можно на вкладке Инструменты -> Конструктор регулярных выражений. Также можно отправлять получаемый код страниц прямо в Тестовом парсинге. Для этого необходимо включить debug режим и кликнуть по ссылке Go to RegEx Builder.

Открыть код страницы в конструкторе регулярных выражений

В конструкторе есть возможность выбирать язык программирования в котором будут использоваться полученные регулярные выражения.

Для работы с конструктором нужно в поле слева вставить текст-источник (либо же он будет вставлен автоматически из Тестового парсинга при переходе Go to Regex Builder). Справа настраиваем параметры будущего регулярного выражения.

Для составления простого Регулярного выражения (например, для получения тайтла) достаточно указать нужные элементы регулярного выражения.

  • В поле Перед группой вписываем символы, которые находятся перед той информацией которая нам нужна
  • В поле После группы вписываем символы, которые находятся после нужных данных
  • В поле Группа начинается с указываем символы, с которых должна начинаться искомая строка
  • В поле Группа заканчивается указываем символы, которые должны быть в конце искомой строки
Пример получения тайтла используя конструктор регулярных выражений

Как видно на скриншоте выше, мы составляем регулярное выражение, которое будет выбирать title сайта. Перед группой поставим <title> и после группы </title>, а также, для примера, укажем что искомая строка начиинается с буквы W.

Для полноценного тестирования полученного регулярного выражения есть возможность включать нужные флаги: g, s и i.

Также можно составлять более сложные регулярные выражения, в которых 2 и более группы. Для примера попробуем составить регулярное выражение для сбора всех ссылок и анкоров в списке <li>. Для этого нам нужно включить флаг g и добавить ещё одну группу поиска, так как в первой группе будут ссылки, а во второй анкоры.

Пример использования групп в конструкторе регулярных выражений

Задав нужные параметры для обеих групп, получаем регулярное выражение:

<li><a href="(.+?)">(.+?)<\/a

Чтобы проверить регулярное выражение нажмите кнопку Тест:

Проверка созданной регулярки в конструкторе регулярных выражений

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