Цель задания
Научиться использовать ForkJoinPool
для решения рекурсивных задач.
Что нужно сделать
Напишите приложение, которое в многопоточном режиме сформирует карту заданного сайта (список ссылок), и запишите её в файл. Ссылки на дочерние страницы должны располагаться в файле с отступами на одну табуляцию относительно родительских.
Пример
https://skillbox.ru/
https://skillbox.ru/media/
https://skillbox.ru/media/management/
https://skillbox.ru/media/management/kak_rat_podkhod/
Рекомендации
-
В файле должны быть ссылки на страницы, размещённые на том же домене (в примере — skillbox.ru). В списке не должно быть:
- ссылок на другие сайты и поддомены,
- ссылок на внутренние элементы страниц (у таких ссылок есть символ # после адреса страницы).
-
При запросе страниц нужно выдерживать паузы (с помощью метода
sleep()
у потока), чтобы сайт не заблокировал доступ вашего приложения. Используйте значения от 100 до 150 мс. -
Для отладки программы выберите сайт с сотнями или тысячами страниц (например, http://www.lenta.ru/), чтобы сервер вас не заблокировал.
Критерии оценки
«Зачёт» — программа формирует список ссылок любого сайта и сохраняет в текстовый файл.
«Незачёт» — задание не выполнено.