Как написать робота

12
R
На сайте с 16.01.2003
Offline
0
3416

Доброго времени суток...

недавно задался вопросом, как написать робота???

у кого-нибудь есть соображения на этот счет?

U
На сайте с 30.12.2002
Offline
116
#1

Что должен делать робот?

С уважением, Евгений
R
На сайте с 16.01.2003
Offline
0
#2
Что должен делать робот?

Робот должен индексировать сайты. У меня сущсествует ряд предложений по этому поводу.

1.1 Когда ты заглотил содержимое HTML-ки, как строку из HTTP клиента ты должен выкинуть из нее все теги. Разумеется надо соблюдать все правила HTML - выкидывать комментарии, блоки тегов типа script и т.д. обычные теги можно просто выкидывать. Потом последовательно вытаскивать из получившейся строки слова. (см. ниже).

1.2 Заноси все слова, которые только сможешь найти. За слово считать

непрерывную последовательность допустимых символов. Допустимыми считать английский алфавит, цифры, русский алфавит и некоторые спец. знаки (напр. тире). Т.е. даже "a", "но" или "варумпик-стривомнлунс" считать за слова.

1.3. Именно так работает например teleport pro. Алгоритм тоже есть - после того как заглотили HTML-ку выполняем след. дейсвтия:

1.3.а. проверяем можно ли эту html-ку индексировать вообще (мета-теги для роботов и expiration-time в заголовках http-ответа).

1.3.б. находим все ссылки, похожие на URL в тексте полученного документа. следует помнить, что ссылки бывают абсолютные (типа http://www.net.org/path/homepage.html) и относительные. следует так же помнить, что относительные в свою очередь делятся на ссылки от корня сайта (типа /dir/page.htm) и ссылки от текущего документа (типа

somepath/page2.htm). Всё это надо учитывать.

1.3.в заносим все эти полученные URL-и в список уже имеющихся в базе. Повторений не допускать. Если ссылка уже была посещена тоже не делать ничего.

1.3.г. обрабатываем страничку по пунктам 1.1 и 1.2.

1.4. переходим к следующей непосещенной страничке из списка накопленных на пункте 1.3.в.

xm я бы порекомендовал следующую структуру БД (лучше чтобы она была реляционной, но можно и без этого):

таблица "словарь":

id (index) | word (string)

таблица "страницы":

id (index) | URL (string) | expiration (datetime) | visited (boolean)

таблица "слова" (основная):

id (index) | word_id (index from "словарь") | page_id (index from

"страницы") | count (integer)

Предположим что было расчитано ниже в таблице "словарь"

накопилось 450000 записей. Пусть, на среднестатичтическом сайте находится 1000 страниц, а на каждой странице в среднем по 500 неповторяющихся слов. Т.о. получаем, что на каждый сайт мы получаем по 500000 записей в таблице "слова". Это уже серьезная нагрузка, но для индексирования только собственного сайта вполне реализуемо. Кроме того ты можешь отсекать общеупотребительные междометия, которые бы составляли 10-30% этой нагрузки типа "но", "а" и т.д. Для этого нужно было бы еще в таблицу словарь добавить поле "запрещено" типа boolean. Этим ты можешь снизить нагрузку.

[Удален]
#3

"Класификатор" написали, теперь робота пишем. 😂

euhenio
На сайте с 21.09.2001
Offline
357
#4

Могу дать 3 самодельных скрипта на перле - робот, разборщик индекса и скрипт поиска, если надо. А ты мне что-нибудь хорошее, например, ссылку :) Написанное под одну систему, работает на сайте в профиле.

с ув., Евгений Трофименко seo блог Trofimenko.ru ( http://trofimenko.ru/ ) но ыыы мало обновляется... Tools.Promosite.ru - анализатор апдейтов Яндекса (пожертвуйте лимиты на Яндекс.XML! ( https://searchengines.guru/ru/forum/801888/page7#comment_11942489 )) Konvr.ru - увеличение конверсии сайта на 81% за 4 недели ( http://konvr.ru/ )
VT
На сайте с 27.01.2001
Offline
130
#5

Rodion, что-то ты все напрочь перемешал. Робот, то есть спайдер, должен только ходить по неизвестным ссылкам и складывать страницы в хранилище, а индексатор только обрабатывать эти страницы и создавать индексы. При этом сохранять все в реляционных базах не самая лучшая идея - как ты сможешь потом обновлять индекс, если какая-нибудь страница изменилась?

R
На сайте с 16.01.2003
Offline
0
#6

Не могли бы вы дать ссылку где почитать теорию, или написать прямо здесь в форуме.

Если я правильно понял, то спайдер - это то, что я назвал роботом. Правильно?

А вот, что такое индексатор я не понял. Если можно, то по подробнее.Interitus, что такое классификатор

VT
На сайте с 27.01.2001
Offline
130
#7
Не могли бы вы дать ссылку где почитать теорию, или написать прямо здесь в форуме. Если я правильно понял, то спайдер - это то, что я назвал роботом. Правильно?

Правильно. К сожалению, на русском языке литературы по этой теме почти нет. Для поверхностного ознакомления с архитектурой поисковой системы могу порекомендовать разве что эту

ссылку. Если с английским проблем нет, то для понимания принципов будет достаточно прочтения одного документа.

F
На сайте с 15.11.2000
Offline
116
#8
Как писал Rodion
что такое классификатор

На форуме г-н MSA a очень бурно развивал научную дискуссию в стиле профессора Выбегалло. :) Вот результаты его трудов:

С уважением,

Александр Садовский.

AB
На сайте с 30.01.2003
Offline
1
#9

Вот вы здесь все боитесь идею выдать или ещё что.

А мне и не надо рассказывать как именно вы это реализовывали и в каких продуктах. Меня, например, эта тема заинтересовала, потому что тема дипломной такая. И мне бы сейчас теорию почитать. Всё равно я вам конкуренцию не составлю.

Vyacheslav Tikhonov, Почему сохранять все в реляционных базах не самая лучшая идея? По моему хорошая идея. У меня даже требования к диплому SQL Server.

AA
На сайте с 16.04.2001
Offline
70
#10

2Andrew.Balan

Да, молодой человек, хорошо начинаете...

Неужто Вам приведенных Вячеславом ссылок мало для начала работы? Кстати, никакой особенной идеи - "волшебной палочки" в написании паука нет. Все довольно примитивно, но довольно трудоемко.

С уважением, Антонов Александр.
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий