HTML::LinkExtractor - парсер внешних и внутренних ссылок с указанного сайта, может ходить по внутренним ссылкам до выбранного уровня

15 ноя 2016

  • Собираемые данные(top)



    • Количество внешних ссылок
    • Количество внутренних ссылок
    • Внешние ссылки: сами ссылки, анкоры, анкоры очищенные от HTML тегов и параметр nofollow
    • Внутренние ссылки: сами ссылки, анкоры, анкоры очищенные от HTML тегов и параметр nofollow
    [​IMG]

    Возможности(top)



    • Переход по внутренним страницам сайта до указанной глубины(опция Parse to level) - позволяет пройтись по всем страницам сайта, собирая внутренние и внешние ссылки
    • Поддерживает автоматическую перекодировку анкоров из любой кодировки в UTF-8
    • Автоматически очищает анкор от HTML тегов(например <b>, <img> и т.п.)
    • Определение nofollow для каждой ссылки
    • Возможность указать считать сабдомены как внутренние страницы сайта

    Варианты использования(top)



    • Получение полной карты сайта - сохранение всех внутренних ссылок
    • Получение всех внешних ссылок с сайта
    • Проверка обратной ссылки на свой сайт

    Запросы(top)


    В качестве запросов необходимо указывать ссылки на страницы с которых необходимо собрать ссылки, или точку входа(например главную страницу сайта) если используется опция Parse to level:


    Опция Parse to level(top)


    Указывает парсеру переходить по соседним страницам сайта в глубину до указанного уровня, например:
    • Если указан 1-ый уровень то парсер перейдёт по всем ссылкам указанным на исходной странице
    • Если указан 2-ой уровень то парсер перейдёт по всем ссылкам указанным на исходной странице + по всем ссылкам собранным со страниц на первом уровне
    • т.д.
    Простыми словами - это минимальное число кликов между исходной страницей и конечной
    Т.к. на соседних страницах скорее всего будут ссылки на исходную страницу или повторы ссылок, то для того чтобы парсер не зациклился и не ходил по кругу необходимо обязательно включать уникальность запросов(Unique queries).
    Также, по аналогии с Net::HTTP Net::HTTP доступны опции Check content, Use pages и Check next page.

    При использовании данной опции есть возможность управлять ссылками для перехода. Для этого существует массив $followlinks, который содержит в себе ссылки для следующего шага (уровня) перехода. Над этим массивом можно применять фильтры, тем самым регулируя куда можно переходить. Ниже приведен пример.

    Примеры заданий(top)


    Сбор всех внешних ссылок с сайта(top)


    [​IMG]
    На данном скриншоте выбраны настройки:
    • Переход по соседним страницам до 10-ого уровня
    • В результат сохранять только список внешних ссылок
    • Уникальность запросов, т.е. парсер не будет 2 раза переходить по одной и той же ссылке
    • Уникальность результатов по строке, т.е. в конечный файл будут сохранены только уникальные ссылки с указанного сайта

    Сбор всех внутренних ссылок с сайта(top)


    Настройки аналогичны как в предыдущем примере, только меняем Result format на $intlinks.format('$link\n') - сохраняем только внутренние ссылки

    Переход только по ссылкам, в которых отсутствует слово forum(top)


    [​IMG]

    Возможные настройки(top)

    Общие настройки для всех парсеров
    ПараметрЗначение по умолчаниюОписание
    Subdomains are internalСчитать ли поддомены как внутренние ссылки
    Follow linksInternal onlyОпределяет по каким ссылкам переходить
    User agentMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)Заголовок User-Agent при запросе страниц
    Max redirects count0Максимальное кол-во редиректов по которым будет переходить парсер
    Bypass CloudFlareАвтоматический обход проверки CloudFlare на браузер
    Use gzipОпределяет использовать ли сжатие передаваемого трафика
fodert, unlover, Fast25 и ещё 1-му нравится это.