Подтвердить что ты не робот

Очень простой Crawler Crawler/spider?

Я пытаюсь сделать очень простое приложение веб-искателя/паука на С++. Я искал google для простого понимания концепции. И я нашел это:

http://www.example-code.com/vcpp/spider.asp

Но, его немного сложнее/трудно переварить для меня.

То, что я пытаюсь сделать, это просто, например:

введите url: www.example.com(я буду использовать bash → wget, чтобы получить содержимое/исходный код)

то он будет искать, возможно, ссылку "href", а затем сохранить в каком-то файле данных.

Любой простой учебник или рекомендации для меня?

Я только начинаю изучать С++ (1 месяц)

4b9b3361

Ответ 1

Хорошо, я постараюсь указать вам в правильном направлении. Концептуально веб-браузер довольно прост. Он вращается вокруг структуры данных очереди FIFO, в которой хранятся ожидающие URL-адреса. С++ имеет встроенную структуру очереди в стандартной библиотеке, std::queue, которую вы можете использовать для хранения URL-адресов в виде строк.

Основной алгоритм довольно прост:

  • Начните с базового URL-адреса, который вы выберите и поместите его в верхней части ваша очередь
  • Введите URL-адрес в верхней части очереди и загрузите его.
  • Разбор загруженного HTML файла и извлечение всех ссылок
  • Вставьте каждую выделенную ссылку в очередь
  • Перейдите к шагу 2 или остановитесь, как только достигнете определенного предела.

Теперь я сказал, что webcrawler концептуально прост, но его реализация не так проста. Как видно из приведенного выше алгоритма, вам понадобится: сетевая библиотека HTTP, позволяющая загружать URL-адреса и хороший анализатор HTML, который позволит вам извлекать ссылки. Вы упомянули, что можете использовать wget для загрузки страниц. Это несколько упрощает, но вам все равно нужно разбирать загруженные документы HTML. Правильный анализ HTML - это нетривиальная задача. Простой поиск строк для <a href= будет работать только иногда. Однако, если это только игрушечная программа, которую вы используете для ознакомления с С++, для ваших целей может потребоваться простой поиск строк. В противном случае вам нужно использовать серьезную библиотеку разбора HTML.

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

Тем не менее, я согласен с larsmans в комментариях. Веб-браузер не самый лучший способ изучить С++. Кроме того, С++ не является лучшим языком для написания веб-браузера. Необработанный и низкоуровневый доступ, который вы получаете на С++, бесполезен при написании программы, такой как веб-браузер, который тратит большую часть своего времени на ожидание разрешения URL-адресов и скачать. По-моему, для этой задачи лучше подходит язык сценариев более высокого уровня, такой как Python или что-то еще.

Ответ 2

Проверьте этот веб-искатель и индексатор, написанный на С++, по адресу: Поисковый робот Mitza Код может использоваться как ссылка. Является чистым и обеспечивает хорошее начало для webcrawler codding. Схемы последовательности можно найти на приведенных выше страницах ссылок.