Поиск по блогу

четверг, 2 октября 2008 г.

С чего начать?

В комментариях прозвучал вопрос:
А как написать сборщик адресов сайтов из каталогов? Подскажите, пожалуйста, с чего начать?
Итак, постараюсь развернуто ответить.

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

Определитесь с инструментарием. Допустим, я выбираю Delphi, а собранные данные буду хранить в структурированном виде в текстовых файлах (потом при желании их можно будет легко обработать).

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

Расскажу, как бы я поступила, если бы надо было просто собрать информацию о сайтах. Создала бы класс "Ссылка_сайта" (свойства: непосредственно сама ссылка и "флаг посещения" (у непосещенной страницы — false, у посещенной — true)) и список объектов этого класса, загрузила бы главную страницу сайта, собрала бы с нее регуляркой все внутренние ссылки, записала бы их в список (предварительно проверив, что их в списке еще нет), проверила, нет ли на странице данных, подходящих под шаблон блока информации о каком-либо сайте (шаблон составляется заранее на основе анализа кода страницы), найденную информацию записала в базу (текстовую или иную - не имеет значения), проверив, нет ли ее там. И далее - рекурсивно обошла бы таким образом все страницы сайта. У посещенной ссылки "флаг посещения" делать равным true, чтобы посещать все страницы только один раз.

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

Статьи схожей тематики:



Комментариев нет:

Отправить комментарий

Комментарии модерируются, вопросы не по теме удаляются, троллинг тоже.

К сожалению, у меня нет столько свободного времени, чтобы отвечать на все частные вопросы, так что, может, свой вопрос лучше задать на каком-нибудь форуме?

Поделиться