Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> решил сделать робот поиска сайтов на PHP 
:(
    Опции темы
kshyms
Дата 13.12.2007, 11:09 (ссылка)    | (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Цель это заполнение каталога за короткое время при минимуме трудозатрат. 
Идея такая в цикле допустим от 1 до 10 а в перспективе и до 1000 вызываем сайты и пихаем в базу, читаем определяем заголовок и ключевые слова и также в базу пихаем. Этот робот думаю будет небольшим по объему. Что такое индексация до сих пор не понял. Я думаю это просто запись в базу  как есть.
Вопрос как проверить файл на пустоту? Как игнорировать переходы на другой сайт, которые выставлены на некоторых сайтах, что бы цикл не нарушать? У меня еще будут несколько вопросов по мере проведения исследований


Код

include $b;  

начало уже есть

Это сообщение отредактировал(а) kshyms - 13.12.2007, 12:16
PM MAIL WWW Skype   Вверх
bars80080
Дата 13.12.2007, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 2
Всего: 315



если пустота самой переменной содержащей ссылку, то empty
если файл, то filesize и иже с ним функции http://php.ru/manual/index.functions.html
PM MAIL WWW   Вверх
Feldmarschall
Дата 13.12.2007, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: -2
Всего: 32



В протоколе НТТР нет никаких файлов.
PM   Вверх
krundetz
Дата 13.12.2007, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 1
Всего: 69



Цитата

Что такое индексация до сих пор не понял. Я думаю это просто запись в базу  как есть.

ИМХО индексация необходима для создания поискового образа документа, тоесть некой абстракции которая в самом примитивном представление является перечнем слов найденных в документе их весу
сопоставленных с неким идентификатором для повышения быстроты поиска.


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
numerovan
Дата 13.12.2007, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



что такое ИМХО ?
мне тоже интересно как сделать поискового робота  smile 
PM MAIL   Вверх
bars80080
Дата 14.12.2007, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 2
Всего: 315



имею мнение хрен оспоришь
вставляют где не попадя
PM MAIL WWW   Вверх
kshyms
  Дата 14.12.2007, 11:04 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Чем интересны известные поисковики? Тем, что в их базах есть все. Как они работают ? Поиск новых сайтов у них организован по ссылкам на другие сайты. Есть у них анализаторы, кроме всего прочего.

Добавлено через 4 минуты и 19 секунд
Цитата

что такое ИМХО ?
мне тоже интересно как сделать поискового робота  


Это Ваша точка зрения. Я не волшебник и не все так быстро и еще к тому же я только учусь...
PM MAIL WWW Skype   Вверх
kshyms
Дата 14.12.2007, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Код

// получает содержимое файла в строку
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);

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

Это сообщение отредактировал(а) kshyms - 14.12.2007, 13:00
PM MAIL WWW Skype   Вверх
kshyms
Дата 14.12.2007, 13:03 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



//если  в загруженном и прочтенном файле есть переход на другой сайт  тогда переход на следующую итерацию

Это сообщение отредактировал(а) kshyms - 14.12.2007, 13:04
PM MAIL WWW Skype   Вверх
coyl
Дата 14.12.2007, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 13.6.2006

Репутация: нет
Всего: 1



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

Кстати ИМХО - от английского IMHO (In My Humble Opinion) - по моему скромному мнению =)
А Имею Мнение Хрен Оспоришь - это стёб =)

Это сообщение отредактировал(а) coyl - 14.12.2007, 13:47
PM MAIL   Вверх
kshyms
  Дата 26.12.2007, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Цитата

Такой поисковик будет адски медленно работать. 
 Главное чтоб работало, а вручную сайты добавлять долгая история. Задача простая ускорить заполнение каталога и  заменить модератора роботом. 
загрузка и генерация 1 сайт/ мин + анализ 1 мин + индексация заголовок и ключевые слова 2 мин=4 мин  
15 сайтов в час и в день 225 сайтов. В  каталоге Яндекс 65000 сайтов. Яндекс работает  с 1996 года. Легко подсчитать сколько нужно времени, что бы приблизиться к этому уровню хотя бы теоретически. 

Это сообщение отредактировал(а) kshyms - 26.12.2007, 17:47
PM MAIL WWW Skype   Вверх
kshyms
Дата 27.12.2007, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



PM MAIL WWW Skype   Вверх
kshyms
Дата 27.12.2007, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



а это уже загрузка , анализ линка  и запись его в базу настроен на 30 итераций робот нового поколения.

Только пока не цикле а по одному. Думаю сгодится для добавления сайта в каталог. Это 3 недели работы. 

Код

<html>

<head>
  <title></title>
</head>

<body>



<?php
$url='http://www.aol.com' ;
$file = fopen ("$url", "r");

//çàãîëîâîê
if (!$file) {
    echo "<p>Unable to open remote file.\n";
    exit;
}
while (!feof ($file)) {
    $line = fgets ($file, 1024);
    /* This only works if the title and its tags are on one line */
    if (eregi ("<title>(.*)</title>", $line, $out)) {
        $title = $out[1];
        break;
    }
}


/// èíäåêñàöèÿ
// Get a file into an array.  In this example we'll go through HTTP to get
// the HTML source of a URL.
$lines = file ($url);

// Loop through our array, show html source as html source; and line numbers too.
foreach ($lines as $line_num => $line) {
    echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br>\n";
}

// Another example, let's get a web page into a string.  See also file_get_contents().
$html = implode ('', file ($url));



// Çàìåíÿåì âñå ïåðåõîäû íà íîâóþ ñòðîêó ñïåöñèìâîëàìè
$message=ereg_replace("\n","<br>",$message);
// Çàïèñûâàåì ñîîáùåíèå â ôàéë ãîñòåâîé êíèãè. Çíàêè "\n" îáîçíà÷àþò ïåðåõîä íà íîâóþ ñòðîêó
$f = fopen ("book_message2.txt", "a");
 fwrite ($f, "$url|$email|$message/$title/$html\n"); // Çàïèñûâàåì ñîîáùåíèå  Çíàêè "\n" îáîçíà÷àþò ïåðåõîä íà íîâóþ ñòðîêó
 fclose ($f); // Çàêðûâàåì ôàéë
fclose($file);
?>



</body>

</html>
Код





Это сообщение отредактировал(а) kshyms - 21.1.2009, 14:13
PM MAIL WWW Skype   Вверх
kshyms
  Дата 1.1.2008, 08:54 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Итак вырисовываются два варианта на основе генерации случайных чисел создавать линки сайтов. 
1. Юзер сам ищет сайты в поисковике на сайте и пихает их в свою базу (блокнот) на его компьютере по ключевым словам 
2. Админ заупскает робота-поисковика сайты анализируются и HTML коды их записываются в базу блокнот или Mysql. Последнее гораздо предпочтительнее.  
До меня недавно дошло, что можно будет организовать поиск по ключевым словам и записывать html коды сайтов в базу юзера.  
Юзер называет домен и количество итераций. И сам юзер сможет без проблем искать у себя в базе ему нужное по ключевым словам. Это по нашему мнению поисковик нового поколения. 
Каждому юзеру по базе. Возможно ли это сделать? Каким должно быть оптимальное решение этой проблемы?

$f = fopen ("D:\1\wfsearch.08\katalog\book_message2.txt", "a");
fwrite ($f, "$url|$email|$message/$title/$html\n"); 
fclose ($f); 

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


Это сообщение отредактировал(а) kshyms - 3.1.2008, 12:08
PM MAIL WWW Skype   Вверх
kshyms
Дата 1.1.2008, 10:07 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Еще проблема.В цикле как правильно записать если файл пустой тогда его игнорировать?
$url=$b10 ;
$file = fopen ('$url', 'r');
if (!$file) {
    echo "<p>не существует";
    FALSE ;
}
PM MAIL WWW Skype   Вверх
Silent_s
Дата 9.5.2008, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 2.12.2007
Где: Москва

Репутация: нет
Всего: 0



А никто не знает где можно подробней почитать про поисковых роботов?=)
--------------------
Мой блог
PM MAIL   Вверх
krundetz
Дата 13.5.2008, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 1
Всего: 69



Цитата(Silent_s @ 9.5.2008,  10:06)
А никто не знает где можно подробней почитать про поисковых роботов?=)

В своё время когда потребовалось нарыл много на google по запросу crawler.


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
Mushu
Дата 15.5.2008, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 20.7.2004

Репутация: нет
Всего: -5



Интересная тема нужно ее развивать во всех направлениях. Готов внести свою лептуу
PM MAIL   Вверх
zjeka
Дата 22.9.2008, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 15.8.2008
Где: Ukraine

Репутация: нет
Всего: нет



Мысли вслух (далеко не оптимистические)

Вы представляете сколько времени понадобится поисковику, чтобы из 65 000 сайтов найти искомый + проверить не удален ли он и если удален прогрузить сохраненную копию.

Роботу понадобится непрерывно ходить по инету и собирать новые страницы, обновлять старые.

Вы представляете сколько это трафика?

ИМХО наиболее рациональный и удобный поиск: имитация паука - проход по всем ссылкам на текущей странице.

Такая рекурсия только на 1-м среднего размера сайте (5 страничек) умрет.

Но можно, конечно, поработать с отводимой памятью под процесс и т.п.
PM MAIL ICQ   Вверх
Boxa
Дата 30.9.2008, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 25.10.2006

Репутация: -2
Всего: -2



Цитата(zjeka @ 22.9.2008,  21:47)
Мысли вслух (далеко не оптимистические)

Вы представляете сколько времени понадобится поисковику, чтобы из 65 000 сайтов найти искомый + проверить не удален ли он и если удален прогрузить сохраненную копию.

Роботу понадобится непрерывно ходить по инету и собирать новые страницы, обновлять старые.

Вы представляете сколько это трафика?

ИМХО наиболее рациональный и удобный поиск: имитация паука - проход по всем ссылкам на текущей странице.

Такая рекурсия только на 1-м среднего размера сайте (5 страничек) умрет.

Но можно, конечно, поработать с отводимой памятью под процесс и т.п.

обоснуйте свой ответ, отчего же он умрет?  smile 

я пока плохо понял, зачем это все надо? какая цель?
PM MAIL   Вверх
Resha
Дата 22.10.2008, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 14.3.2008

Репутация: нет
Всего: нет



Цитата(kshyms @ 26.12.2007,  17:35)
Цитата

Такой поисковик будет адски медленно работать. 
 Главное чтоб работало, а вручную сайты добавлять долгая история. Задача простая ускорить заполнение каталога и  заменить модератора роботом. 
загрузка и генерация 1 сайт/ мин + анализ 1 мин + индексация заголовок и ключевые слова 2 мин=4 мин  
15 сайтов в час и в день 225 сайтов. В  каталоге Яндекс 65000 сайтов. Яндекс работает  с 1996 года. Легко подсчитать сколько нужно времени, что бы приблизиться к этому уровню хотя бы теоретически.

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

Закончим тем, что задача тривиальна и укладывается в схему:
1. Поиск сайтов:
Берем главную страницу какого-нибудь сайта (file_get_contents и т.п. или curl) -> парсим его контент на внутренние ссылки -> по внутренним ссылкам парсим контент на наличие внутренних ссылок.
Таким образом, в итоге имеем список всех страниц сайта.
Парсим контент всех страниц сайта на внешние ссылки -> получаем адреса главных страниц внешних сайтов.
Таким образом, имеем список главных страниц всех сайтов, на которые ссылает данный сайт.
Для этого списка снова проделываем пункт 1. (в итоге, пока не получим все линкованные с кем-нибудь домены, не остановимся).
2. Берем главные страницы сайтов, полученные в пункте 1. Парсим их тайтл, кеи и т.п. (preg_match_all и т.п.)

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

Добавлено через 10 минут и 7 секунд
На некоторые поступившие неоптимистичные мысли:
1.
Цитата
наиболее рациональный и удобный поиск: имитация паука - проход по всем ссылкам на текущей странице.
Такая рекурсия только на 1-м среднего размера сайте (5 страничек) умрет


Такая рекурсия не умрет никогда, ибо это не рекурсия на уровне функций (или методов), это рекурсия на уровне структуры распарсиваемого сайта, которая вас абсолютно не волнует - в каждый момент времени вы работаете (максимум) с двумя объектами:
а) контент текущей распарсиваемой страницы
б) список всех страниц сайта, которые вы на данный момент уже распарсили (соответственно, их уже не надо парсить и ходить по их ссылкам, найденным в контенте а))

2. Отслеживание удаления сайта проходит простым ping'ом (если на этапе формирования каталога запоминать IP сайта, то вы сможеет также определить, не сменился ли IP (т.е. вполне вероятно, владелец и контент) сайта, и по смене IP определять необходимость перепарсивания сайта).



Вообще, не понятно, автор хочет сделать тупо каталог ссылок на сайты по различной тематике или полноценный поисковик с кешированием (читай Google)? smile Если первое - мы тут все всё усложняем, если второе - ... smile
PM MAIL   Вверх
kshyms
Дата 13.11.2008, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Цитата

если второе

Resha,  И первое   второе Это пока индексация за счет траффика юзера  А если сюда добавить генератор и часть кода выполнять в перле или с++ тогда вырисовываются перспективы 
А это запись индекса  то ли в базу то ли еще куда  А на счет того что бы все подряд парсить этого нам не потянуть места не хватит и поэтому есть ограничения в 5000 бит. Уже подсчитано 27000*0,1 кбт=1,7 гбт еще можно потянуть

Это сообщение отредактировал(а) kshyms - 17.11.2008, 15:02
PM MAIL WWW Skype   Вверх
zjeka
Дата 16.11.2008, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 15.8.2008
Где: Ukraine

Репутация: нет
Всего: нет



Цитата(Resha @  22.10.2008,  17:23 Найти цитируемый пост)
Если первое - мы тут все всё усложняем, если второе - ... smile 

+1

Может не стоит делать поисковик на PHP и доверить реализацию С-ишникам.
PM MAIL ICQ   Вверх
kshyms
Дата 21.1.2009, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Заполнение базы в цикле - это уже не проблема , а проблема в разработке 
робот паука на php. Пока только главные страницы сайтов лучше грузить.
Если из базы вызывается url в цикле по всему полю, то почему то сам файл не загружается пока через include "$f[url]";                 

Это сообщение отредактировал(а) kshyms - 21.1.2009, 13:18
PM MAIL WWW Skype   Вверх
CyClon
Дата 21.1.2009, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: нет
Всего: 4



Я бы не ставил писать паука на PHP... Ущербно.


--------------------
user posted image
PM   Вверх
krundetz
Дата 22.1.2009, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 1
Всего: 69



Цитата(CyClon @  21.1.2009,  20:19 Найти цитируемый пост)
Я бы не ставил писать паука на PHP... Ущербно. 

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


Цитата(kshyms @  21.1.2009,  12:53 Найти цитируемый пост)
Если из базы вызывается url в цикле по всему полю, то почему то сам файл не загружается пока через include "$f[url]";

не понял насчет этого, если ты хочешь url, спаренный с сайта, подставить в include для загрузки страницы находящейся по данному url, то так неделают, для скачки страницы по url используй curl, хотя возможно ты что то другое имеешь ввиду


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
kshyms
Дата 22.1.2009, 07:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



krundetz

Цитата

не понял насчет этого, если ты хочешь url, спаренный с сайта, подставить в include для загрузки страницы находящейся по данному url, то так неделают, для скачки страницы по url используй curl, хотя возможно ты что то другое имеешь ввиду 

Все дело в том что из базы в цикле уже вызываются линки сайтов в цикле но посредством include $f[url]; не загружаются  главные страницы

Добавлено через 6 минут и 28 секунд
krundetz
Цитата

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

Одобряем, но если его сделать на php, тогда можно будет  у этого алгоритма синтаксис поменять и его на C можно будет перевести, если будут проблемы со скоростью. И еще я думаю если его кроном вызывать тогда он намного меньше ресурсов будет потреблять, даже если он будет написан на PHP.
PM MAIL WWW Skype   Вверх
meekman
Дата 23.1.2009, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 20.1.2008

Репутация: нет
Всего: нет



Внесу свою лепту:

1. Считаю, что писать паука нужно на C(на компилируемом языке) - это вопросы использования процессора. Очевидно, что php будет на пару порядков дольше выполнять ту же операцию, чем си.

2. Но допустим на php легче и удобнее для разработчика. 
   Стоит разделить программу на части:
   1. "паук" собирает url с страничек и сохраняет в бд.
   2. "анализатор" обращается к url, находящимся в БД и, получив данные, начинает разбор контента.

   Для того, чтобы иметь возможность искать по собранным данным - необходимо анализировать их слова. В простейшем случае, как уже упоминалось, просто разбить html код на слова, исключить теги и js,css вставки и сохранить результаты в бд. Механизм релевантности - чем больше запрошенных слов на странице, тем выше она будет в результатах. Теперь если в запросе есть слово, находящееся на этой страничке - она будет указана в результатах. Но это очень неэффективный в плане релевантности механизм.

Может, задача такого робота не в собирании информации - это простое дело, а в анализе релевантности страницы, в выяснении ее смысла и именно в этом направлении нужно думать. 

Алгоритм анализа страниц - это патентованная технология каждой поисковой кампании, ее самая оберегаемая тайна =)


PM MAIL   Вверх
zim2slim
Дата 23.1.2009, 02:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 8.1.2009
Где: Ростов на Дону

Репутация: нет
Всего: нет



ребят вы че.. а я это парсером называю...
чет какие то простые задачи... 
а смысл такого робота???
PM MAIL ICQ YIM   Вверх
kshyms
Дата 23.1.2009, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Цитата

а смысл такого робота??? 
 В том что бы поиск для юзера был удобнее и оперативнее, а кто это сделает тот и будет в фаворе..
PM MAIL WWW Skype   Вверх
solenko
Дата 23.1.2009, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 2
Всего: 67



Цитата(meekman @  22.1.2009,  23:02 Найти цитируемый пост)
1. Считаю, что писать паука нужно на C(на компилируемом языке) - это вопросы использования процессора. Очевидно, что php будет на пару порядков дольше выполнять ту же операцию, чем си.

О каких операциях речь? О получении http страницы, где основная задержка за отдающим сайтом? О регулярных выражениях, которые будет выполнять одна и та же библиотека? Или о чем-то другом?


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
meekman
Дата 23.1.2009, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 20.1.2008

Репутация: нет
Всего: нет



Об операциях анализа страниц, я думаю. Для малого объема php достаточно, но для большого, я считаю, совсем неэффективно. Мое мнение в том, что php - не самое лучшее средство для вычислений любого рода. Оно удобно только для динамического контента, это то, для чего оно предназначалось - preprocessor для html(и других) языков форматирования.

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

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


В плюсы php:
1) легкий язык;
2) легкое изменения алгоритмов и мнгновенный результат;
3) имеет встроенные сетевые и строковые(reg exp) средства.


PM MAIL   Вверх
MuToGeN
Дата 24.1.2009, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 4
Всего: 32



автору темы: попробуйте написать простейший скрипт на похапе, выполняющий такой функционал, и посмотреть по strace, что происходит при его выполнении. А потом написать подобную вещь на C и тоже посмотреть системные вызовы. Именно от их кол-ва и зависит производительность бота. Если речь о серьезных промышленных мощностях, то рано или поздно пожалеете, что выбрали похапе для такой задачи.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
kshyms
Дата 24.1.2009, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



PM MAIL WWW Skype   Вверх
kshyms
Дата 25.1.2009, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



void set_time_limit(int 0); в литературе написано что если 0 тогда нет ограничений на выполнение сценария, а что не так?
PM MAIL WWW Skype   Вверх
krundetz
Дата 26.1.2009, 04:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 1
Всего: 69



попробуй вот так
set_time_limit(9999);


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.1354 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.