RSS
 

Простой паук, начало (часть 1)

21 Сен

Для того, чтобы понять что-либо надо создать нечто похожее. Лично таково моё мнение о познании объектов окружающего мира. Так или иначе , создав объект – мы обретаем тот нужный уровень проникновения в суть явления.Согласно философии Гегеля  невозможно понять явление, не уяснив всего пути, который оно совершило в своем развитии, что разви­тие происходит не по замкнутому кругу, а поступательно от низших форм к высшим, что в этом процессе совершается переход количественных изменений в качественные. Вот так и будем изучать , создавая сам объект простого паука.

Создав что-либо подобное можно вырасти качественно и как результат лучше научиться пользоваться созданным своими руками. Любая деятельность вебмастера сопряжена с идексацией его творений. Проще говоря не было бы индексации – не было бы ни seo , ни простых вебмастеров. Это естественно. Поэтому я решил разобраться как устроена ПС изнутри.

Для этого я решил написать простого паука. Это конечно не полноценная ПС, но основные моменты можно будет здесь отразить. Так или иначе цель проще- создать общую схему для индексации небольшого числа html  документов в начале. И впоследствии развить до функционального алгоритма.

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

Вот в начале поговорим об общей схеме создания паука. Создадим файл searchengine.py.  Добавим в него класс spider и описание методов, которые будут описаны дальше.

class spider:

Следующуя строчка производит инициализацию паука и передаёт ему имя базы данных.

def __init__(self,dbname):
       pass

Следующая строчка производит удаления класса

def __del__(self):
      pass

Обработка базы данных:

def dbcommit(self):
      pass

Вспомогательная функция для получения идентификатора и добавления записи в случае отсутствия таковой

def getentryid(self,table,field ,value,createnew=True):
 return None

Индексирование одной страницы:

def addtoindex(self,url,soup):
     print "Indexing %s" % url

Извлечение текста из html-страницы (без тегов) Вполне терпимая к ошибкам в коде и неверных отработках javascript скриптов

def gettextonly(self,soup):
     return None

Разбиение текста на слова

def separatewords(self,text):
       return None

Проверка УРЛ документа на проиндексированность , исключение из индекса повторов.

def isindexed(self,url):
      return False

Следующая функция добавляет ссылки между страницами. Впоследствии может быть использовано в ранжировании.

def addlinkref(self,urlFrom,urlTo,linkText):
      pass

Вот непосредственно и сам паук. Он как раз и занимается индексированием информации на странице, индексируя всё до заданной глубины

def spide(self,pages,depth=2):
      pass

Создание таблиц в базе данных с записями о числе ссылок и о словах принадлежищих данному хтмл документу.

def createindextables(self):
     pass

Впоследствие конечно надо ещё построить нейронную сеть для создания наиболее эффективной схемы ранжирования. Ну вообщем общая схема в принципе проста. Только дальнейшей анализ собранной информации и является основной задачей таких ПС как Яндекс и Гугл. В целом дальше я более подробно остановлюсь на том как эти функции устроены. Но пока на этом всё.

Google Bookmarks Reddit Technorati Yahoo My Web БобрДобр.ru Memori.ru МоёМесто.ru
 
1 комментарий

Опубликовано в рубрике Индексация

 

Прокомментировать

 
 
  1. lifephysic

    21.09.2010 - 17:02

    Первый комментарий будет моим. Что ж потом конечно выложу полный код в файле питона….

     
 
Система Orphus

Enter your email address:

Delivered by FeedBurner

.