Вы будете перестраивать колесо, чтобы быть уверенными. Но вот основы:
Помещенный они в персистентное устройство хранения данных, таким образом, можно остановить и запустить поисковый робот, не теряя состояние.
Алгоритм:
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
}
}
}
Поисковые роботы просты в понятии.
Вы добираетесь, корневая страница через HTTP ПОЛУЧАЮТ, анализируют его, чтобы найти URL и поместить их на очередь, если они уже не были проанализированы (таким образом, Вам нужна глобальная запись страниц, которые Вы уже проанализировали).
можно использовать заголовок Типа контента для обнаружения то, что тип содержания, и ограничьте поисковый робот только парсингом типов HTML.
можно разделить HTML-тэги для получения простого текста, который можно сделать анализ текста на (для получения тегов, и т.д., сути страницы). Вы могли даже сделать это на тегах высокого звука/заголовка для изображений, если бы Вы получили усовершенствованный.
И в фоновом режиме у Вас может быть пул потоков, съедая URL от Очереди и делая то же. Вы хотите ограничить количество потоков, конечно.
Если сайты Вашего NPO будут относительно большими или сложными (наличие динамических страниц, то это эффективно создаст 'черную дыру' как календарь с 'следующим днем' ссылка), Вы лучше использовали бы реальный поисковый робот, как Heritrix.
, Если общее количество сайтов некоторые нумеруют страниц, можно сойти с рук просто использование завихрения или wget или собственного. Просто помните, начинают ли они становиться крупными, или Вы начинаете делать свой сценарий более сложным, чтобы просто использовать реальный поисковый робот или по крайней мере посмотреть на его источник для наблюдения то, что является ими выполнение и почему.
Некоторые проблемы (существуют больше):
Википедия имеет хорошую статью [приблизительно 110] поисковые роботы , покрывая многие алгоритмы и соображения.
Однако я не потрудился бы писать свой собственный поисковый робот. Это - большая работа, и так как Вам только нужен "простой поисковый робот", я думаю все, в чем Вы действительно нуждаетесь, стандартный поисковый робот . Существует много бесплатных и поисковых роботов с открытым исходным кодом, которые, вероятно, сделают все, в чем Вы нуждаетесь с очень небольшой работой с Вашей стороны.
Вы могли составить список слов и сделать поток для каждого слова искавшим в Google.
Тогда каждый поток создаст новый поток для каждой ссылки, которую он находит на странице.
Каждый поток должен записать то, что он находит в базе данных. Когда каждый поток заканчивает читать страницу, он завершается.
И там у Вас есть очень большая база данных ссылок в Вашей базе данных.
Используйте wget, сделайте рекурсивная сеть сосет, который выведет все файлы на Ваш жесткий диск, затем записать другой сценарий, чтобы пройти все загруженные файлы и проанализировать их.
Редактирование: или возможно завихрение вместо wget, но я не знаком с завихрением, я не знаю, делает ли это рекурсивные загрузки как wget.