![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
UmmiLab |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 4.10.2007 Репутация: нет Всего: 1 |
Здравствуйте! Помогите пожалуйста. Нужен скрипт поиска по сайту без ключевых слов и без помощи поисковых систем.
|
|||
|
||||
magelan |
|
|||
![]() потерял xPath ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 5.4.2010 Репутация: 3 Всего: 16 |
попытка юмора?
сейчас вы еще добавите, без БД и точно станет понятно, что поиск не нужен. советую гуглить на предмет устройства поисковых машин. поиск написанный на коленке, ничего не ищет... только делает вид. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: нет Всего: 459 |
magelan, как я понял речь о простом скрипте (лабораторная работа). Типа обойти div / p теги DOM и по совпадению выдать урл. Используется библиотека jQuery .
В примерах к ней используется массив Address (возможно это результат работы Гугла), так что сами странички искать не нужно, задача поиска внутри страницы.
P.S. тема создана по моему совету. К сожалению с javascript, а также jQuery не знаком. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 48 Всего: 386 |
Все страньше... ![]() А искать-то что? телепатически выяснять? Насколько я смог вообразить задачу - это input для ввода строки поиска где-то в начале странички, в которую вводят некое слово. после этого нужно выделить все вхождения этого слова в тексте. Вроде как Ctrl-F в Хроме, только похуже ... Такая задача наиболее близка по смыслу к "лабораторной работе". Впрочем и решений такой задачи довольно много в интернетах. Это сообщение отредактировал(а) ksnk - 20.9.2010, 09:18 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
Alexeis |
|
||||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: нет Всего: 459 |
Все еще проще, если слово присутствует на странице, то нужно добавить ссылку в список найденных (document.write). Ничего подсвечивать не нужно. В примере поиск осуществлялся таким образом
Где Item содержимое едита. contains - это какой-то скрипт из jQuery для сравнения. В данном случае он сравнивает с ключевым словом. В описании библиотеки сказано, что contains умеет не только сравнивать текст, но и искать по тегам, в том числе и по вложенным. По идее нужно сделать что-то типа contains(Item, document.<root>) . <root> - имею ввиду доступ к корневому тегу <html> Ради разнообразия приведу полный код поиска по ключевым словам. По идее с минимальными переделками его можно переделать в поиск по тексту используя contains(Item, document.<root>) . Собственно не зная синтаксиса и особенностей языка правильно сделать это трудно. У меня даже проверить результат не выходит ![]()
![]() Это сообщение отредактировал(а) Alexeis - 20.9.2010, 15:11 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
да. большинство кода javascript идёт вместе с html. тогда гораздо полезнее подстветка по-умолчанию - хтмл. твой код, кстати, из этого же плана. вот только почему ты насильно включил javascript - не понятно. подсветка html нормально обработает и javascript |
|||
|
||||
ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 48 Всего: 386 |
B]Alexeis[/B],
задача, когда возможно всего два варианта - "на этой страничке слово нашлось" и "ничего не нашли" - тривиальна и неинтересна, можно обойтись одним alert'ом. Без ajax? То есть, предлагается разместить такой сервис на всех страничках сайта, методично, вручную, посредством заказчика ;) пробежатся по ним и прокликать на кнопку "поиск" на всех страничках? В результате, на отдельной вкладке, которая должна появится после первого клика будет скапливаться информация о найденных страничках? Document.write тут не самый подходящий инструмент. Возникнут довольно забавные сложности с общением между вкладками. Их можно реализовать на куках. одно окно будет искать и вываливать информацию в куку, из которой окно с результатами будет выковыривать информацию по таймауту. после чего ее опустошать. В качестве прикола или трудотерапии такую задачу еще можно себе представить, но в качестве лабораторной - уже нет... Imho ajax все-таки - более человеколюбивое решение ![]() Хотя, web-паучек для сайта на javascript - довольно забавное и, вероятно, полезное в чем-то, существо. Может его кто-нибудь уже делал? надо б поискать... Если сайт маленький и не страшно его подосить таким образом - почему бы и не прикрутить? Собственно, поиск в одной страничке достаточно тривиален. Что-нибудь вроде:
Хотя насчет того, что весь body во всех броузерах с удовольствием отдаст весь свой текстовый контент со всеми вложенными дивами с учетом скрытых элементов, я почему-то сомневаюсь... Если нужно искать фразу - нужно аккуратно прослешить фразу так. чтобы ее можно было безопасно вставить в регулярку, заменив служебные символы на прослешенные и пробелы на \s+ и сделать вместо indexof match с получившейся регуляркой... Если фраза - просто набор слов - вместо пробелов поставить |... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
||||
|
|||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: нет Всего: 459 |
Хм... действительно, ведь контент нужно подгружать с других веб страниц. Т.е. чтобы выполнить условие задачи нужно сначала создать невидимый тег типа meta, затем в него загрузить страницу, дождаться загрузки, сделать поиск, удалить содержимое, загрузить контент следующей страницы и т.д. В принципе реализуемо, но мне кажется что для лабораторной сложновато. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: нет Всего: 459 |
Таки добил решение, правда набор страниц сайта пришлось забить массивом. Подгрузку страниц сделал при помощи скрипта $.get (AJAX), который по окончанию загрузки передает в калбэк функцию html текст страницы, калбэк функция берет следующую ссылку и рекурсивно вызывает себя до тех пор пока не переберет весь список до конца.
Получилось очень даже просто.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 48 Всего: 386 |
Ну, для человека не знакомого с jQuery и javascript - очень даже хорошо.
![]() Я чуть-чуть подредактировал и собрал в кучку
основные изменения по сравнению с предыдущим вариантом - введено поле для ввода адресов страниц. Понятно, что они должны быть в том-же домене, что и страница поиска + добавлена инструкция MsgBox.document.close(); в конце собственно поиска, иначе возникали забавные и не всегда безопасные глюки в разных броузерах. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
UmmiLab |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 4.10.2007 Репутация: нет Всего: 1 |
Огромнейшее всем спасибки за помощь!! Вы меня спасли
![]() |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |