Написание веб-сканера не так просто, как простое чтение статического HTML, если страница использует JavaScript для изменения DOM, это становится сложным.Вам также нужно будет искать страницы, которые вы уже посетили, ака Spider Traps?Если сайт представляет собой чистый статический HTML, то используйте его ... Но если сайт использует Jquery и он большой, ожидайте, что он будет сложным.
Если ваш сайт статичен, мал и почти не содержит JS, используйте ответы, которые уже перечислены.
Или
Вы можете использовать Heritrix а затем позже проанализировал его crawl.log для 404-х годов. Heritrix doc на crawl.log
или Если вы больше всего пишете свои собственные:
Вы можете использовать что-то вроде HTMLUnit (у него есть движок JavaScript), чтобы загрузить страницу, а затем запросить объект DOM для ссылок.Затем поместите каждую ссылку в «непосещенную» очередь, затем извлеките ссылки из невидимой очереди, чтобы получить следующий URL для загрузки. Если страница не загружается, сообщите об этом.
Чтобы избежать дублирования страниц (ловушек для пауков), вы можете хэшировать каждую ссылку и сохранять таблицу хеш-адресов посещенных страниц (см. CityHash ).Перед помещением ссылки в очередь, которая не посещалась, проверьте ее по посещаемой хэш-таблице.
Чтобы не покидать свой сайт, убедитесь, что URL-адрес находится в списке безопасных доменов, прежде чем добавлять его в очередь для непосещенных пользователей.Если вы хотите убедиться, что ссылки вне домена хороши, сохраните их в очереди offDomain.Затем позже загрузите каждую ссылку из этой очереди, используя URL.getContent (url), чтобы увидеть, работают ли они (быстрее, чем с помощью HTMLUnit, и вам все равно не нужно анализировать страницу.).