Как записать поисковый робот?

61
задан Kara 14 April 2014 в 20:16
поделиться

6 ответов

Вы будете перестраивать колесо, чтобы быть уверенными. Но вот основы:

  • список А непосещаемых URL - отбирает это с одной или несколькими начальными страницами
  • список А посещаемых URL - таким образом, Вы не бродите вокруг в кругах
  • Ряд правил для URL, Вы не интересуетесь - таким образом, Вы не индексируете целый Интернет

Помещенный они в персистентное устройство хранения данных, таким образом, можно остановить и запустить поисковый робот, не теряя состояние.

Алгоритм:

while(list of unvisited URLs is not empty) {
    take URL from list
    remove it from the unvisited list and add it to the visited list
    fetch content
    record whatever it is you want to about the content
    if content is HTML {
        parse out URLs from links
        foreach URL {
           if it matches your rules
              and it's not already in either the visited or unvisited list
              add it to the unvisited list
        }
    }
}
147
ответ дан slim 24 November 2019 в 16:59
поделиться

Поисковые роботы просты в понятии.

Вы добираетесь, корневая страница через HTTP ПОЛУЧАЮТ, анализируют его, чтобы найти URL и поместить их на очередь, если они уже не были проанализированы (таким образом, Вам нужна глобальная запись страниц, которые Вы уже проанализировали).

можно использовать заголовок Типа контента для обнаружения то, что тип содержания, и ограничьте поисковый робот только парсингом типов HTML.

можно разделить HTML-тэги для получения простого текста, который можно сделать анализ текста на (для получения тегов, и т.д., сути страницы). Вы могли даже сделать это на тегах высокого звука/заголовка для изображений, если бы Вы получили усовершенствованный.

И в фоновом режиме у Вас может быть пул потоков, съедая URL от Очереди и делая то же. Вы хотите ограничить количество потоков, конечно.

5
ответ дан JeeBee 24 November 2019 в 16:59
поделиться

Если сайты Вашего NPO будут относительно большими или сложными (наличие динамических страниц, то это эффективно создаст 'черную дыру' как календарь с 'следующим днем' ссылка), Вы лучше использовали бы реальный поисковый робот, как Heritrix.

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

Некоторые проблемы (существуют больше):

  • Черные дыры (как описано)
  • Повторения (что, если Вы получаете 500?)
  • Перенаправления
  • Управление потоком (еще можно быть нагрузкой на сайтах)
  • реализация robots.txt
5
ответ дан Vinko Vrsalovic 24 November 2019 в 16:59
поделиться

Википедия имеет хорошую статью [приблизительно 110] поисковые роботы , покрывая многие алгоритмы и соображения.

Однако я не потрудился бы писать свой собственный поисковый робот. Это - большая работа, и так как Вам только нужен "простой поисковый робот", я думаю все, в чем Вы действительно нуждаетесь, стандартный поисковый робот . Существует много бесплатных и поисковых роботов с открытым исходным кодом, которые, вероятно, сделают все, в чем Вы нуждаетесь с очень небольшой работой с Вашей стороны.

4
ответ дан Derek Park 24 November 2019 в 16:59
поделиться

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

2
ответ дан Gero 24 November 2019 в 16:59
поделиться

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

Редактирование: или возможно завихрение вместо wget, но я не знаком с завихрением, я не знаю, делает ли это рекурсивные загрузки как wget.

0
ответ дан whatsisname 24 November 2019 в 16:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: