Пишу паука

12
C
На сайте с 30.01.2005
Offline
1
3203

Приветствую!

Я решил написать (ради практики) паука, который будет рыскать по сегменту UZ

Сам я живу в Ташкенте :)

И так, у меня к Вам несколько вопросов!

1. Можно ли использовать MySQL базу для хранения данных?

2. как лучше хранить данные? (урл - слово или урл - фраза)

С уважением, Александр
VT
На сайте с 27.01.2001
Offline
130
#1
1. Можно ли использовать MySQL базу для хранения данных?

Конечно, можно.

. как лучше хранить данные? (урл - слово или урл - фраза)

Вы паука хотите написать или что-то другое? Или какое отношение к нему имеет "слово" или "фраза" ?

lagif
На сайте с 15.12.2004
Offline
30
#2

Паук просто читает страницы. К индексации он отношения не имеет. Для начала просто проверьте правильность его работы: правильно ли он ищет и интерпретирует ссылки, правильно ли качает страницы, правильно ли редиректит их; фреймы опять же, пусть читает. Если вы еще этим не занимались, то могу заметить, что до индексации придется подождать: почитайте о протоколе HTTP, о настройках сокетов и все такое...

А статистику паука хранить в MySQL, разумеется, можно.

Это тоже пройдет...
C
На сайте с 30.01.2005
Offline
1
#3
Вы паука хотите написать или что-то другое? Или какое отношение к нему имеет "слово" или "фраза" ?

Индексатора и краулера в одной программе!

Дело в том, что в Ташкенте траффик дорогой и место на серваках тоже!

Я так понял, что краулер качает страничку, обрабатывает ссылки, а индексатор, закачивает её опять (с мира или локального ресурса) и индексирует! Я же хочу одновременно и обрабатывать ссылки и индексировать за один "шаг".

Паук просто читает страницы

Это как? Мне казалось, что краулер ищет ссылки, а паук (индексатор) обрабоатывает документ!

Пишу я на Си под линукс!

Сейчас основная проблема - разработка структры базы данных!

Есть, конечно же, более мелкие проблемы, но они со временем решатся!

Слонжовато писать на Сях, Си, как известно, не поддерживает строки и, следовательно, остожняет разработку! Подумывал писать на Python-е, но Питон плохо знаю и потом, он скриптовый!

Что посоветуете? Учить питон (забросить Си) или все же мучиться! Это чисто моя инициатива - создать паука для зоны Уз!

VT
На сайте с 27.01.2001
Offline
130
#4
Я так понял, что краулер качает страничку, обрабатывает ссылки, а индексатор, закачивает её опять (с мира или локального ресурса) и индексирует!

Не так. Краулер занимается и закачиванием документов, и извлечением из них ссылок. Индексатор создает поисковые индексы, по которым идет сам поиск.

Слонжовато писать на Сях, Си, как известно, не поддерживает строки и, следовательно, остожняет разработку! Подумывал писать на Python-е, но Питон плохо знаю и потом, он скриптовый!
Что посоветуете? Учить питон (забросить Си) или все же мучиться! Это чисто моя инициатива - создать паука для зоны Уз!

Используйте C++, там есть библиотеки STL для работы со строками.

lagif
На сайте с 15.12.2004
Offline
30
#5

Vyacheslav Tikhonov,

Лучше, наверное, на С++.

Структура БД, как мне показалось - не самое сложное. Сложнее построить демона так, чтобы он работал многопоточно, по графику, чтобы он правильно понимал, куда идти по ссылке, куда редиректить, понимал ответы сервера, читал фреймы, (robots.txt - это когда ваш агент-поисковик уже имеет имя в Сети) и извлекал из доков правильные ссылки, а потом разбирал, когда и как их обрабатывать.

Опять же, неплохо приаттачить к этому демону независимый мониторинг - чтобы смотрел, что и сколько качается в каком потоке в данный момент, что висит, что вообще failed...

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

C
На сайте с 19.09.2001
Offline
120
#6
robots.txt - это когда ваш агент-поисковик уже имеет имя в Сети

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

С уважением, Владимир Чернышов. (не)?путевые заметки (http://chernyshov.kiev.ua/)
C
На сайте с 30.01.2005
Offline
1
#7

lagif, для начала я хочу написать простого паука!

Не так. Краулер занимается и закачиванием документов, и извлечением из них ссылок. Индексатор создает поисковые индексы, по которым идет сам поиск.

А почему бы не объеденить это в одну программу!

Пусть скачивает страничку, ищет ссылки и ключевые слова! Мне кажется, тут нет минусов! а +: меньше траффика!

M
На сайте с 03.03.2004
Offline
43
#8

Chuck, такое впечталение что вы несколько заблуждаетесь в представлении о работе пауа.

1. задача паука - идти по заданному списку ссылок и подготовить информацию (тект\ссылки) для последующей обработки. естественно эта информация храниться ЛОКАЛЬНО,

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

2. пауком можно называть как скрипт который непосредственно скачивает (проверяет) нужный контент, но и набор скриптов которые не только скачивают, но и анализируют контент.

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

обьясню на примере...

допустим скрипту требуется 1 секунда на то чтобы закачать документ и еще 1 секунда уходит на его обработку.

если эти функции совмещены в одном скрипте то за 1 минуту вы сможете проиндексировать всего 30документов.

при этом у вас простаивает 50% от процессора (во время загрузки документа) и 50% от загрузки канала (во время анализа).

а если этим занимаются паралельные скрипты то за минуту вы индексируете 60документов.

далее все будет веселее, если у вас однопотоковая система то у вас в любом случае получается что будут колосальные простои мощности (особенно если в списке урлов попадеться один сайт который будет тормозить или отваливаться по таймауту секунд этак через 60), поэтому надо делать многопоточную систему. способную к распределенным вычислениям и постановкам задач.

тогда за туже минуту вместо 60 документов вы будете в состоянии проиндекировать 6000.

далее, не обольщайтесь что если вы хотите индексировать только УЗ сайты, то у вас будет маленький индекс. проблема маленького сегмента - в его разрознености, вы можете проиндексировать несколько замкнутых сайтов составляющих часть этого сегмента, но это не даст вам индекса ВСЕХ сайтов.

для того чтобы проиндексировать ВСЕ УЗ сайты вам придеться переодически выходить за рамки УЗ сегмента чтобы проиндексировать более глобальные вещи и через них найти другие сегменты УЗ сайтов.

далее майСКЛ - хороший выбор для тестов, но для продакшн системы это не есть лучший вариант.

Си хороший язык и сам по себе краулер стоит писать именно на нем.

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

гугл и инктоми на питоне вроде когда то делали, по мне так перл и РНР тоже для этой цели подойдут, но ресурсов очень много жрать будут.

п.с. и не пытайся сделать сразу глобальный скрипт для поиска в интернете. для начала скопируй пару сайтов локально и потренируйся на них. а то неграмотные алгоритмы реализации могут привести к печальным последствиям :)

Дневник БоГа (http://www.seriousrevenue.com/). Лента SEO форумов (http://www.seriousrevenue.com/scripts/rubot/). Статистика денег (http://www.seriousrevenue.com/scripts/rate/).
lagif
На сайте с 15.12.2004
Offline
30
#9

Chuck,

Индексацию лучше рассматривать как отдельный процесс. В нем есть свои тонкости: парсинг html-контента, определение веса слов, морфологический разбор, наконец. Даже если у вас получится совместить два процесса, чтоб они работали экстра-мега-супер-быстро, над индексатором работать желательно отдельно.

Библиотеки там подгружаемые... ну, у кого как :) Думается, лучше ползание по сети и индексацию распараллелить. И кто вам сказал, что качать придется дважды?

Cherny, Вы, безусловно, правы. Правила роботов - есть правила роботов.

:)

ZW
На сайте с 10.08.2004
Offline
7
#10

crawler, spider, search engine => http://scholar.google.com

С уважением, Сибирский Оборотень
12

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