Обзор опции Parse custom result на примере парсинга rambler.ru

3 июн 2013
  • Содержание


    Обзор опции Parse custom result на примере парсинга rambler.ru(top)


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

    • В сочетании с парсером Net::HTTP можно писать практические любые парсеры контента, примеры - Alexa Rank Parser, Parse Google with RegEx
    • Можно обрабатывать любые результаты от любого парсера, к примеру выделить домен из ссылки при парсинге выдачи с поисковых систем
    В A-Parser'е используются Perl-совместимые регулярные выражения(PCRE), почитать можно здесь


    Рассмотрим возможности данной опции на примере создания парсера выдачи http://www.rambler.ru, предположим нам необходимы следующие данные:

    • Количество найденных страниц
    • Ссылки и их анкоры в выдаче

    [​IMG]


    Шаг 1- Получаем страницу выдачи по произвольному запросу


    Заходим на http://www.rambler.ru/, вбиваем любой запрос, получаем ссылку с необходимыми параметрами, далее настраиваем Query format следующим образом:

    [​IMG]

    Таким образом наш запрос автоматически подставляется в ссылку и скачивается указанная страница


    Шаг 2 - Парсинг с помощью регулярных выражений


    Добавляем опцию Parse custom result и пишем регулярное выражение для поиска количества результатов, искать будем в {data} - исходный код скачанной страницы, а сохранять в переменную totalcount:

    [​IMG]

    Тут стоит оговориться о типе результата(Result type), бывают 2 типа результатов:

    • Flat - простые
    • Array - массивы результатов
    Первый тип подразумевает использование когда необходимо извлечь один результат со страницы, например такой как число найденных результатов
    В массив сохраняются результаты которых несколько на странице - при использовании регулярного выражения с ключом g или когда происходит парсинг по массиву результатов - тогда новые результаты так же сохраняются в массив
    При сохранении в массив ему необходимо задать имя, по которому в дальнейшем к нему можно будет обращаться. Для парсинга ссылок и анкоров нам как раз потребуется сохранять их в массив, добавим еще одну опцию Parse custom result, напишем регулярное выражение с флагом g(глобальный поиск), в первой скобке будет сохраняться ссылка, во второй анкор. Назовем массив serp, ссылки будем сохранять под имнем link и анкоры под anchor:

    [​IMG]


    Шаг 3 - Указываем в каком виде сохранять результат


    В результат будем выводить количество страниц, с новой строки выведем массив с ссылками и анкорами через пробел, после каждого элемента массива будем переводить строку

    [​IMG]


    Посмотрим что получилось:

    [​IMG]

    Убедившись что все работает верно мы можем сохранить созданный пресет:

    [​IMG]

    При сохранении все настройки переносятся в Add task и можно сразу запускать задание. Чтобы протестировать сохраненный пресет есть опция Try in Parser Test:

    [​IMG]

    Готовыми пресетами можно легко обмениваться - достаточно сделать экспорт пресета:

    [​IMG]


    Мы получим код, который можно передать другому владельцу A-Parser'а или выложить в Wiki. Код из данного примера:

Gerero нравится это.