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

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

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

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

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

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

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

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

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

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

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

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

Описание работы с регулярными выражениями в А-Парсере

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

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

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

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

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

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

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

/img/lang/en.png
/img/lang/ru.png
img/logo-ap@2x.png
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>, а также, для примера, укажем что искомая строка начиинается с буквы А.

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

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

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

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

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

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

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

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

Полезные ссылки#

Рег. выражения для самых маленьких

Меня зовут Виталий Котов и я немного знаю о регулярных выражениях. Под катом я расскажу основы работы с ними...

Рег. выражения (regexp) — основы

Регулярные выражения — это механизм для поиска и замены текста. В строке, файле, нескольких файлах...

⏩Парсим каталог пром. оборудования

Пример использования регулярок в парсинге каталога промышленного оборудования

⏩Парсинг ресурса Booking.com

Пример использования регулярок в парсинге ресурса Booking.com

⏩Поиск страниц контактов

Пример использования регулярок в парсинге страниц контактов

Последнее обновление