![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
kshyms |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 303 Регистрация: 30.8.2006 Где: Душанбе Репутация: нет Всего: 0 |
Цель это заполнение каталога за короткое время при минимуме трудозатрат.
Идея такая в цикле допустим от 1 до 10 а в перспективе и до 1000 вызываем сайты и пихаем в базу, читаем определяем заголовок и ключевые слова и также в базу пихаем. Этот робот думаю будет небольшим по объему. Что такое индексация до сих пор не понял. Я думаю это просто запись в базу как есть. Вопрос как проверить файл на пустоту? Как игнорировать переходы на другой сайт, которые выставлены на некоторых сайтах, что бы цикл не нарушать? У меня еще будут несколько вопросов по мере проведения исследований
начало уже есть Это сообщение отредактировал(а) kshyms - 13.12.2007, 12:16 |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 2 Всего: 315 |
если пустота самой переменной содержащей ссылку, то empty
если файл, то filesize и иже с ним функции http://php.ru/manual/index.functions.html |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: -2 Всего: 32 |
В протоколе НТТР нет никаких файлов.
|
|||
|
||||
krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 1 Всего: 69 |
ИМХО индексация необходима для создания поискового образа документа, тоесть некой абстракции которая в самом примитивном представление является перечнем слов найденных в документе их весу сопоставленных с неким идентификатором для повышения быстроты поиска. |
|||
|
||||
numerovan |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: нет Всего: 2 |
что такое ИМХО ?
мне тоже интересно как сделать поискового робота ![]() |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 2 Всего: 315 |
имею мнение хрен оспоришь
вставляют где не попадя |
|||
|
||||
kshyms |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 303 Регистрация: 30.8.2006 Где: Душанбе Репутация: нет Всего: 0 |
Чем интересны известные поисковики? Тем, что в их базах есть все. Как они работают ? Поиск новых сайтов у них организован по ссылкам на другие сайты. Есть у них анализаторы, кроме всего прочего.
Добавлено через 4 минуты и 19 секунд
Это Ваша точка зрения. Я не волшебник и не все так быстро и еще к тому же я только учусь... |
|||
|
||||
kshyms |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 303 Регистрация: 30.8.2006 Где: Душанбе Репутация: нет Всего: 0 |
Думаю это тоже понадобиться на всякий случай, а случаи бывают разные. Можно ли это обработать прочитать и запихнуть в дальнейшем в title заголовок и ключевые слова? Это сообщение отредактировал(а) kshyms - 14.12.2007, 13:00 |
|||
|
||||
kshyms |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 303 Регистрация: 30.8.2006 Где: Душанбе Репутация: нет Всего: 0 |
//если в загруженном и прочтенном файле есть переход на другой сайт тогда переход на следующую итерацию
Это сообщение отредактировал(а) kshyms - 14.12.2007, 13:04 |
|||
|
||||
coyl |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 13.6.2006 Репутация: нет Всего: 1 |
Такой поисковик будет адски медленно работать. Индексация - это упорядочивание данных в особую структуру для быстрого поиска. В этом основное назначение индекса. А если тупо записывать все страницы в файлы - то потом по этим файлам поиск будет мягко говоря долгим.
Кстати ИМХО - от английского IMHO (In My Humble Opinion) - по моему скромному мнению =) А Имею Мнение Хрен Оспоришь - это стёб =) Это сообщение отредактировал(а) coyl - 14.12.2007, 13:47 |
|||
|
||||
kshyms |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 303 Регистрация: 30.8.2006 Где: Душанбе Репутация: нет Всего: 0 |
загрузка и генерация 1 сайт/ мин + анализ 1 мин + индексация заголовок и ключевые слова 2 мин=4 мин 15 сайтов в час и в день 225 сайтов. В каталоге Яндекс 65000 сайтов. Яндекс работает с 1996 года. Легко подсчитать сколько нужно времени, что бы приблизиться к этому уровню хотя бы теоретически. Это сообщение отредактировал(а) kshyms - 26.12.2007, 17:47 |
|||
|
||||
kshyms |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 303 Регистрация: 30.8.2006 Где: Душанбе Репутация: нет Всего: 0 |
||||
|
||||
kshyms |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 303 Регистрация: 30.8.2006 Где: Душанбе Репутация: нет Всего: 0 |
а это уже загрузка , анализ линка и запись его в базу настроен на 30 итераций робот нового поколения.
Только пока не цикле а по одному. Думаю сгодится для добавления сайта в каталог. Это 3 недели работы.
Это сообщение отредактировал(а) kshyms - 21.1.2009, 14:13 |
||||
|
|||||
kshyms |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
kshyms |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 303 Регистрация: 30.8.2006 Где: Душанбе Репутация: нет Всего: 0 |
Еще проблема.В цикле как правильно записать если файл пустой тогда его игнорировать?
$url=$b10 ; $file = fopen ('$url', 'r'); if (!$file) { echo "<p>не существует"; FALSE ; } |
|||
|
||||
Silent_s |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 142 Регистрация: 2.12.2007 Где: Москва Репутация: нет Всего: 0 |
А никто не знает где можно подробней почитать про поисковых роботов?=)
--------------------
Мой блог |
|||
|
||||
krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 1 Всего: 69 |
В своё время когда потребовалось нарыл много на google по запросу crawler. |
|||
|
||||
Mushu |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 20.7.2004 Репутация: нет Всего: -5 |
Интересная тема нужно ее развивать во всех направлениях. Готов внести свою лептуу
|
|||
|
||||
zjeka |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 15.8.2008 Где: Ukraine Репутация: нет Всего: нет |
Мысли вслух (далеко не оптимистические)
Вы представляете сколько времени понадобится поисковику, чтобы из 65 000 сайтов найти искомый + проверить не удален ли он и если удален прогрузить сохраненную копию. Роботу понадобится непрерывно ходить по инету и собирать новые страницы, обновлять старые. Вы представляете сколько это трафика? ИМХО наиболее рациональный и удобный поиск: имитация паука - проход по всем ссылкам на текущей странице. Такая рекурсия только на 1-м среднего размера сайте (5 страничек) умрет. Но можно, конечно, поработать с отводимой памятью под процесс и т.п. |
|||
|
||||
Boxa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 25.10.2006 Репутация: -2 Всего: -2 |
обоснуйте свой ответ, отчего же он умрет? ![]() я пока плохо понял, зачем это все надо? какая цель? |
|||
|
||||
Resha |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 14.3.2008 Репутация: нет Всего: нет |
Начнем с того, что каталог Яндекса - это совсем не его поисковый индекс. Каталог - это добавленные вручную пользователями сайты, поисковый индекс (несколько миллиардов страниц) - это страницы, добавленные поисковым роботом. Закончим тем, что задача тривиальна и укладывается в схему: 1. Поиск сайтов: Берем главную страницу какого-нибудь сайта (file_get_contents и т.п. или curl) -> парсим его контент на внутренние ссылки -> по внутренним ссылкам парсим контент на наличие внутренних ссылок. Таким образом, в итоге имеем список всех страниц сайта. Парсим контент всех страниц сайта на внешние ссылки -> получаем адреса главных страниц внешних сайтов. Таким образом, имеем список главных страниц всех сайтов, на которые ссылает данный сайт. Для этого списка снова проделываем пункт 1. (в итоге, пока не получим все линкованные с кем-нибудь домены, не остановимся). 2. Берем главные страницы сайтов, полученные в пункте 1. Парсим их тайтл, кеи и т.п. (preg_match_all и т.п.) Как вы там потом будете в базе организовывать хранение подумайте сами. Вариантов море, причем тривиальных тоже ![]() Добавлено через 10 минут и 7 секунд На некоторые поступившие неоптимистичные мысли: 1.
Такая рекурсия не умрет никогда, ибо это не рекурсия на уровне функций (или методов), это рекурсия на уровне структуры распарсиваемого сайта, которая вас абсолютно не волнует - в каждый момент времени вы работаете (максимум) с двумя объектами: а) контент текущей распарсиваемой страницы б) список всех страниц сайта, которые вы на данный момент уже распарсили (соответственно, их уже не надо парсить и ходить по их ссылкам, найденным в контенте а)) 2. Отслеживание удаления сайта проходит простым ping'ом (если на этапе формирования каталога запоминать IP сайта, то вы сможеет также определить, не сменился ли IP (т.е. вполне вероятно, владелец и контент) сайта, и по смене IP определять необходимость перепарсивания сайта). Вообще, не понятно, автор хочет сделать тупо каталог ссылок на сайты по различной тематике или полноценный поисковик с кешированием (читай Google)? ![]() ![]() |
||||||
|
|||||||
kshyms |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 303 Регистрация: 30.8.2006 Где: Душанбе Репутация: нет Всего: 0 |
Resha, И первое второе Это пока индексация за счет траффика юзера А если сюда добавить генератор и часть кода выполнять в перле или с++ тогда вырисовываются перспективы А это запись индекса то ли в базу то ли еще куда А на счет того что бы все подряд парсить этого нам не потянуть места не хватит и поэтому есть ограничения в 5000 бит. Уже подсчитано 27000*0,1 кбт=1,7 гбт еще можно потянуть Это сообщение отредактировал(а) kshyms - 17.11.2008, 15:02 |
|||
|
||||
zjeka |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 15.8.2008 Где: Ukraine Репутация: нет Всего: нет |
||||
|
||||
kshyms |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 303 Регистрация: 30.8.2006 Где: Душанбе Репутация: нет Всего: 0 |
Заполнение базы в цикле - это уже не проблема , а проблема в разработке
робот паука на php. Пока только главные страницы сайтов лучше грузить. Если из базы вызывается url в цикле по всему полю, то почему то сам файл не загружается пока через include "$f[url]"; Это сообщение отредактировал(а) kshyms - 21.1.2009, 13:18 |
|||
|
||||
CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: нет Всего: 4 |
Я бы не ставил писать паука на PHP... Ущербно.
|
|||
|
||||
krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 1 Всего: 69 |
человеку хочется помучиться, а вообще любой паук это не вопрос языка и его производительности, это вопрос какой объем ему приходиться обрабатывать и сколько серверных ресурсов под это выделено.
не понял насчет этого, если ты хочешь url, спаренный с сайта, подставить в include для загрузки страницы находящейся по данному url, то так неделают, для скачки страницы по url используй curl, хотя возможно ты что то другое имеешь ввиду |
|||
|
||||
kshyms |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 303 Регистрация: 30.8.2006 Где: Душанбе Репутация: нет Всего: 0 |
krundetz,
Все дело в том что из базы в цикле уже вызываются линки сайтов в цикле но посредством include $f[url]; не загружаются главные страницы Добавлено через 6 минут и 28 секунд krundetz,
Одобряем, но если его сделать на php, тогда можно будет у этого алгоритма синтаксис поменять и его на C можно будет перевести, если будут проблемы со скоростью. И еще я думаю если его кроном вызывать тогда он намного меньше ресурсов будет потреблять, даже если он будет написан на PHP. |
||||
|
|||||
meekman |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 20.1.2008 Репутация: нет Всего: нет |
Внесу свою лепту:
1. Считаю, что писать паука нужно на C(на компилируемом языке) - это вопросы использования процессора. Очевидно, что php будет на пару порядков дольше выполнять ту же операцию, чем си. 2. Но допустим на php легче и удобнее для разработчика. Стоит разделить программу на части: 1. "паук" собирает url с страничек и сохраняет в бд. 2. "анализатор" обращается к url, находящимся в БД и, получив данные, начинает разбор контента. Для того, чтобы иметь возможность искать по собранным данным - необходимо анализировать их слова. В простейшем случае, как уже упоминалось, просто разбить html код на слова, исключить теги и js,css вставки и сохранить результаты в бд. Механизм релевантности - чем больше запрошенных слов на странице, тем выше она будет в результатах. Теперь если в запросе есть слово, находящееся на этой страничке - она будет указана в результатах. Но это очень неэффективный в плане релевантности механизм. Может, задача такого робота не в собирании информации - это простое дело, а в анализе релевантности страницы, в выяснении ее смысла и именно в этом направлении нужно думать. Алгоритм анализа страниц - это патентованная технология каждой поисковой кампании, ее самая оберегаемая тайна =) |
|||
|
||||
zim2slim |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 8.1.2009 Где: Ростов на Дону Репутация: нет Всего: нет |
ребят вы че.. а я это парсером называю...
чет какие то простые задачи... а смысл такого робота??? |
|||
|
||||
kshyms |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 303 Регистрация: 30.8.2006 Где: Душанбе Репутация: нет Всего: 0 |
|
|||
|
||||
solenko |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 2 Всего: 67 |
О каких операциях речь? О получении http страницы, где основная задержка за отдающим сайтом? О регулярных выражениях, которые будет выполнять одна и та же библиотека? Или о чем-то другом? -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
meekman |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 20.1.2008 Репутация: нет Всего: нет |
Об операциях анализа страниц, я думаю. Для малого объема php достаточно, но для большого, я считаю, совсем неэффективно. Мое мнение в том, что php - не самое лучшее средство для вычислений любого рода. Оно удобно только для динамического контента, это то, для чего оно предназначалось - preprocessor для html(и других) языков форматирования.
Если уж серьезно подойти, то, вероятно, на малых оборотах php можно легко использовать, но что если алгоритм анализа страниц будет довольно сложный, включающий в себя множественные запросы к разным источникам(бд, базам знаний) для распознования смысла страницы. Если Вы говорите о задержках сети, то было бы логично для ускорения запускать сразу несколько потоков - я не уверен насчет качества реализации fork-функций в пхп. Вообщем-то, все аргументы могут показаться не очень железными, но мое мнение такое - серьезный информационный проект на php писать не стоит(без доказательств). В плюсы php: 1) легкий язык; 2) легкое изменения алгоритмов и мнгновенный результат; 3) имеет встроенные сетевые и строковые(reg exp) средства. |
|||
|
||||
MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 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! |
|||
|
||||
kshyms |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 303 Регистрация: 30.8.2006 Где: Душанбе Репутация: нет Всего: 0 |
осталось только отладить и прогнать бота хотя бы загрузка главных страниц
Это сообщение отредактировал(а) kshyms - 24.1.2009, 15:07 |
|||
|
||||
kshyms |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 303 Регистрация: 30.8.2006 Где: Душанбе Репутация: нет Всего: 0 |
void set_time_limit(int 0); в литературе написано что если 0 тогда нет ограничений на выполнение сценария, а что не так?
|
|||
|
||||
krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 1 Всего: 69 |
попробуй вот так
set_time_limit(9999); |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Для профи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |