В данный момент у меня стоит задача подсчитать страницы таких сайтов как википедия, ютуб и т.д.
простые задачи не для тебя, считай весь интернет перебирать взялся
Правильный подход у тебя описан - перебирать все ссылки (ты еще про map-ы забыл, одно время были популярны, чтобы по ним пройтись можно было прокликать с каким то шагом по всей площади картинки), все остальные подходы - это оптимизации и лимиты.
Если у тебя не стоит задача исполнять javascript (т.е. считать что все ссылки на сайте доступны без его включения) то рекомендую воспользоваться готовыми инструментами, например wget умеет делать полную копию сайта с указанным уровнем вложенности.
Если стоит задача обрабатывать javascript то у тебя проблемы, никаких других универсальных способов, кроме как открывать сайт в браузере - нет, но можно взять старые версии webkit (версии, выпущенные лет 5-10 назад), на их основе мини браузер для анализа сайта будет потреблять очень мало оперативной памяти, а значит на одной машине таких скраперов может быть запущено сотнями, понятно что не все сайты смогут так работать, но процент достаточно высокий.
Так же можно попытаться разработать алгоритмы по определению, требует ли сайт полноценный браузер или ему хватит обычного wget и его аналогов. Что то можно вытащить, определив движок, на котором сайт написан, 90% интернета используют готовые фреймворки, у многих из них свои способы, где то можно попытаться вытащить карту сайта из кода, не выполняя его... стоит ли такая работа экономии на процессорах, хз