вступление

Итак, вы хотите создать веб-сканер с нуля. Сначала мы рассмотрим различные компоненты веб-сканера, а затем рассмотрим логистику, необходимую для написания кода. Давайте начнем!

Алгоритм

Веб-сканирование можно рассматривать как обход всех веб-страниц в Интернете. Мы знаем о двух методах обхода графа, BFS и DFS. Если вы выберете DFS, вы никогда не закончите поиск, и, вероятно, это не то, что нам здесь нужно. Мы реализуем BFS, то есть поиск в ширину.

При поиске в ширину вот список шагов, которые вы должны выполнить:

Посетите веб-сайт

Извлеките все ссылки, которые есть на этом веб-сайте

Поместите эти ссылки в основную очередь

Повторите то же самое.

Цель веб-сканирования

Итак, мы загружаем много веб-сайтов, но почему мы это делаем? Что ж, есть несколько вариантов использования:

Интеллектуальный анализ данных

Веб-индексирование

Веб-анализ

Парсинг веб-страниц

Рейтинг в Интернете

Скачивание веб-сайта

Когда у вас есть ссылка в вашем сканере, следующее, что вам нужно, - это загрузить эту ссылку. Вы можете написать свои собственные загрузчики или использовать предопределенные библиотеки на разных языках. Например: если вы используете Linux, вы можете использовать wget. Проблемы, с которыми вы можете столкнуться на этом этапе:

Серверы могут не отвечать (проблема со временем)

Загрузка веб-сайта займет слишком много времени (проблема времени)

Возможно, вы загружаете PDF-файл или видео (проблема с размером)

Если вы используете библиотеку для загрузки веб-сайта, убедитесь, что вы можете настроить время ожидания и максимальный размер файла. Опять же, если вы реализуете на C ++, вы можете использовать libcURL.

Обработка данных

После того, как вы загрузите файлы HTML, вы захотите обработать эти данные. Одна вещь, которую вы определенно захотите, - это извлечь ссылки из этого HTML-файла. Возможно, вы захотите извлечь текст, изображения или какой-либо особый тип данных для других целей. Вы можете сделать это с помощью веб-скрейпинга. Вы можете проанализировать загруженный HTML-файл и обработать свои данные.

Извлечение ссылок

Для извлечения ссылок из файла HTML вы можете использовать библиотеку или инструмент регулярных выражений. Напоминаем, что не все ссылки в файле HTML будут действительными. Вы должны игнорировать ссылки, которые используются для навигации по веб-странице. Кроме того, есть плохие ссылки, которые вы должны игнорировать. Этот шаг очень важен, поэтому вы хотите проводить здесь много времени.

Перезапуск процесса

Когда вы закончите извлечение ссылок, вы захотите повторить этот процесс. Вы можете распечатать прогресс вашего краулера на терминале или в пользовательском интерфейсе для вашего удобства. Также убедитесь, что вы удаляете временные данные, которые используете.

Создание многопоточного

Если на вашем компьютере есть ресурсы, вы хотите их использовать. Вот почему вам понравится многопоточная реализация. Сначала вы можете научиться создавать и уничтожать потоки. Затем вы можете выбрать основной цикл поискового робота, который будет запускать и обрабатывать эти процессы. Мы следовали одной простой архитектуре, чтобы создать поток, передать ссылку на веб-сайт, тайм-аут и максимальный размер файла в качестве аргументов и позволить ему выполнять свою работу. После завершения этой задачи этот поток может уничтожить себя и отправить сигнал материнскому потоку.

Удачи в программировании!

Надеюсь, вы сможете завершить свою реализацию и сделать классного паука. Если вы хотите больше узнать об этой теме, добро пожаловать на сайт:

C ++ реализация многопоточного веб-краулера