Необходимо написать на php функцию/класс, решающую задачу извлечения ссылок из html документа для последующего краулинга по этим ссылкам.
На входе функция получает:
- html документ
- Ссылку (url) на этот html документ (нужна для извлечения scheme и host)
На выходе — массив из внутренних, внешних и ссылок внутри документа, специальных ссылок.
1. Внешние ссылки — ссылки с отличным от исходного url домена
2. Внутренние ссылки — ссылки с таким же доменом
3. Ссылки внутри документа — это все ссылки с # для навигации внутри документа
4. Специальные ссылки — mailto:
Все ссылки итогового массива (кроме специальных) должны быть приведены к абсолютному виду, оставляем только уникальные ссылки.
/category =>
category =>
//example2.com =>
— scheme зависит от scheme ссылки исходного документа
Host и scheme преобразуем в строчные буквы, остальная часть url регистрозависима, оставляем как есть.
Учесть, что ссылки/домены могут быть на отличном от латиницы языка (Punycode/Urlencode).
На выходе массив:
[external] => array()
[internal] => array()
[page] => array()
[special] => array()