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

Создание пресета для анализа страниц сайта

Анализ ссылок сайта в глубину

  1. Support Alex
    В этой статье мы детально рассмотрим процесс создания пресета для анализа сайта в глубину.

    На вход подается ссылка на главную сайта. Парсер пройдет по внутренним ссылкам вглубь (пусть будет до 5-го уровня) и соберет в CSV таблицу такие данные:

    1. ссылка на страницу;
    2. тайтл (с очисткой от HTML сущностей);
    3. код ответа;
    4. кол-во редиректов;
    5. кол-во внешних ссылок;
    6. глубина (уровень) относительно главной.
    В итоге получим следующий результат:

    [​IMG]

    Можно парсить до определенной глубины сайта, а также спарсить весь сайт целиком при помощи функции Parse to level. Данные, которые можем получить при помощи парсера HTML::LinkExtractor HTML::LinkExtractor:
    1. Внешние ссылки
      • ссылка
      • анкор
      • анкор без HTML
      • параметр nofollow
    2. Внутренние ссылки
      • ссылка
      • анкор
      • анкор без HTML
      • параметр nofollow
    3. Кол-во внутренних ссылок на странице
    4. Кол-во внешних ссылок на странице
    Подробнее о возможностях парсера HTML::LinkExtractor HTML::LinkExtractor.

    1. Выбираем парсер HTML::LinkExtractor HTML::LinkExtractor, потому что данный парсер работает как паук и может автоматически переходить по найденным ссылкам. Заходя на страницу, парсер собирает все внутренние ссылки и после переходит по каждой найденной ссылке. Так происходит до выбраного уровня парсинга или пока не спарсит ссылки со всего сайт, если выбрана опция Parse to level.


    [​IMG]

    2. Выбираем опцию “Парсить до уровня” и ставим значение до какой глубины парсить сайт. В нашем случае ставим значение 5. Парсить до 5 уровня - это значит, что парсер возьмет ссылки с начальной страницы и перейдет по ним вглубь сайта.

    Т.е. начальная страница это будет 0 уровень, пройдя на начальной странице вглубь сайта парсер перейдет на 1 уровень. Собрав ссылки на страницах первого уровня парсер переходит по уже полученным ссылкам, и попадает на 2 уровень и т.д.

    [​IMG]

    [​IMG]

    3. Для того чтобы спарсить Title выбираем опцию “Использовать регулярку”.

    [​IMG]

    4. В выпадающем списке выбираем переменную “$data - Content data”, к которой будем применять регулярное выражение.

    [​IMG]

    5. Пишем регулярное выражение в поле “Регулярка” -
    Код:
    <title[^>]*>\s*([^<]+?)\s*<\/title>
    . А в поле “$1 to” указываем имя переменной, в которую будет записано значение первой группы из регулярки - title.

    [​IMG]

    6. Добавляем переопределение “Good status” и в поле “Значение” выбираем коды ответов сервера, которые нужно собирать для страниц. В данном случае выбираем 200, все 4хх и 500. Оставляем не выбранными 3хх и все что больше 200. Это необходимо для того, чтобы парсер при получении этих статусов считал ответ удачным, а при любых других - повторял попытки.

    [​IMG]

    [​IMG]

    [​IMG]

    7. Нажимаем кнопку “Конструктор результатов”.

    [​IMG]

    Выбираем источник $p1.title.

    [​IMG]

    В поле “Тип” выбираем “Decode HTML entities”. Это необходимо чтобы преобразовать HTML сущности, которые могут встречаться внутри title. В поле “Сохранить в” будет автоматически указана переменная, в которую будет сохраняться полученный результат.

    [​IMG]

    8. В поле “Формат результата” пишем тот формат, в котором необходимо вывести весь результат парсинга. В данном случае указываем tools.CSVline, чтобы автоматически привести значения к формату CSV. И добавляем в скобках переменные, значения которых необходимо занести в таблицу результата. Получим вот такой код
    Код:
    [%  tools.CSVline(query, p1.title, p1.code, p1.response.Redirects.size, p1.extcount, query.lvl) %]
    1. query - начальный запрос;
    2. p1.title - тайтл запроса;
    3. p1.code - код ответа сервера запроса;
    4. p1.response.Redirects.size - кол-во предыдущих редиректов;
    5. p1.extcount - кол-во внешних ссылок;
    6. query.lvl - уровень глубины, относительно начального запроса;
    [​IMG]

    9. В поле “Введите запросы” необходимо ввести ссылку на сайт, который необходимо парсить. Например, https://a-parser.com. Формат запроса оставляем по умолчанию - $query. В опциях ставим галку “Уникальные запросы”, чтобы исключить повторную обработку ранее обработанных страниц.

    [​IMG]

    10. В блоке “Результаты” прописываем имя файла и шапку для таблицы в соответствующие поля:
    1. Имя файла - можно написать как свое имя так и написать встроенную переменную для названия файла по запросу или по дате.
    2. Начальный текст - пишем шапку таблицы через запятую.
    Нажимаем кнопку “Добавить задание”. Задание перейдет во вкладку “Очередь заданий” и парсер начнет собирать данные.

    [​IMG]

    11. Результат появится в папке с парсером по пути (\aparser\results\). Открыв результат увидим таблицу с данными (скрин в самом начале статьи).

    В этой статье показали пример как можно собирать внутренние ссылки в глубь сайта. Рассказали о том как можно расширить поиск при помощи опции Parse to level. Кроме внутренних ссылок можно парсить внешние ссылки с сайта и получать тег nofollow.

    Данный пресет вы можете найти в нашем Каталоге по этой ссылке.