В данной версии добавлена поддержка обработки и фильтрации результатов(Parse custom result, Конструкторы результатов и фильтры) на многоядерных процессорах, что в несколько раз увеличивает скорость парсинга при использовании "тяжелых" регулярных выражений, например скорость сбора email адресов со страниц достигает 10000 ссылок в минуту при 2000 потоках(при этом A-Parser обрабатывает поток 130 мбит\с gzip-сжатых данных)
Другие улучшения
Добавлена возможность указать сразу несколько форматов для запроса, что позволяет комбинировать множество вариантов подстановок для одних и тех же запросов в одном задании
Добавлена возможность использовать формат запроса на всех уровнях вложенного парсинга, например при парсинге ключевых слов с подсказок Google подстановки будут добавляться так же и для новых найденных ключевых слов(как и для исходных запросов)
Этот пост начинает серию статей с рецептами применения A-Parser: комплексные примеры с одновременным использованием различного функционала парсера. Помимо детального разбора заданий можно также оценить скорость обработки запросов и скачать результаты парсинга
В примере рассказано как определить используемый движок у сайтов из базы Алексы топ-миллион, результат автоматически сортируется по файлам с названием CMS. Также дан пример как увеличить скорость обработки и проверить 1 миллион доменов всего за 2 часа
Немного статистики:
Скорость парсинга составила 1100 доменов в минуту
Всего определились 301841 из 1000000 доменов как использующие на своей главной странице одну из популярных CMS, форумов или Wiki
Определено 126 различных CMS
Топ 10 самых популярных CMS, первое значение определяет количество доменов:
Появилась возможность ограничивать общее потребление потоков, что позволяет пропускать задания превышающие текущее потребление, давая возможность выполнится заданиям с меньшим числом потоков. Также данный функционал полезен при использовании прокси-сервисов с лимитированным числом подключений, тем самым можно гарантированно не выходить за пределы тарифа
В очереди заданий теперь можно удалить все задания разом, отдельно для активной очереди и очереди завершенных заданий
Парсер SE::Yandex теперь поддерживает работу с аккаунтами(опция Use Accounts)
При парсинге рекламы в SE::Google теперь дополнительно можно вывести позицию рекламного блока(сверху или справа), а также номер страницы выдачи, на котором показано рекламное объявление
Исправления
Исправлено отображение русских имен файлов запросов и результатов на ОС Linux
Новый парсер SE::MailRu - собирает ссылки, анкоры и сниппеты, количество результатов в выдаче
Новый парсер SE::MailRu::position - проверяет позиции сайтов в выдаче go.mail.ru
Новый парсер SE::Dogpile - парсер поисковика dogpile.com, собирает ссылки, анкоры и сниппеты, количество результатов в выдаче и связанные ключевые слова
Добавлена экспериментальная поддержка многоядерных процессоров для наиболее требовательного к ресурсам процессора парсера Rank::CMS
Для парсера Rank::Ahrefs добавлен парсинг социальных факторов(google+, twitter, facebook), а также возможность выбора режима отчета(ссылка, папка, домен, домен с сабдоменами)
Для парсера Rank::MajesticSEO добавлена возможность получать данные по полной ссылке
Новая опция Emulate browser headers для парсера Net::HTTP - автоматически эмулирует хедеры современных браузеров...
Полностью переработан парсер Rank::CMS, теперь он определяет движок сайта на основе большой и качественной базы признаков Wappalyzer, также появилась возможность выбрать категорию или конкретные движки для распознавания
Появилась возможность сохранять результаты одного задания в разные файлы, с выбором формата результата для каждого файла, к примеру при парсинге Гугла можно сохранять ссылки в один файл и сниппеты в другой
Добавлена возможность использовать шаблоны в параметрах Extra query string и User Agent
В шаблонах теперь можно использовать инструменты, которые доступны через переменную $tools, первый инструмент - выбор произвольного User Agent: $tools.ua.random(), список агентов хранится в файле files/tools/user-agents.txt