06.07.2006, 21:09 | #1 |
Moderator
|
Можно ли задать критерий поиска по форуму в строке адреса web-страницы?
Покажу вопрос на примере.
Ищу на форуме темы по строке "быстрый excel". Ввожу эту строку в поле "Поиск" и жму Enter. Темы находятся. В строке адреса при этом отображается примерно следующее: http://axforum.info/forums/search.php?searchid=66517 "Примерно" - потому что через какое-то время (завтра, например) при поиске строки "быстрый excel" идентификатор "66517" будет уже другим. Ищу "быстрый excel" на Гугле в русском - формируется страшенная строка (наведите мышь - посмотрите внизу): http://www.google.ru/search?hl=ru&q=...gle&lr=lang_ru Пытаюсь скомбинировать две строки, чтобы найти "быстрый excel" на AxForum'е без использования поля "Поиск". Беру до вопросительного знака с AxForum'а, после него с Google: http://axforum.info/forums/search.ph...gle&lr=lang_ru Открывается форма "Расширенный поиск" с полем "Ключевые слова" = "быстрый excel". И эта форма ждёт щелчка по кнопке "Начать поиск". Т.е. в этой новой "страшенной" строке не хватает "нажатия" на эту кнопку "Начать поиск". Как бы сделать это "нажатие" автоматически? И вообще, возможно ли? Может быть, существует более гуманный способ, чем "пропускание" строки-критерия через Google? |
|
06.07.2006, 22:02 | #2 |
Участник
|
Цитата:
Сообщение от Gustav
Пытаюсь скомбинировать две строки, чтобы найти "быстрый excel" на AxForum'е без использования поля "Поиск".
форма поиска помимо самого поиска делает несколько вещей: 1. проверяет права пользователя - может ли он пользоваться поиском? 2. проверяет время, прошедшее с прошлого поиска, если поисковый запрос сделан слишком быстро, то форум выдает ошибку Цитата:
Сообщение от Gustav
Т.е. в этой новой "страшенной" строке не хватает "нажатия" на эту кнопку "Начать поиск".
Цитата:
Сообщение от Gustav
Как бы сделать это "нажатие" автоматически? И вообще, возможно ли?
Но только пожалуйста, не надо устраивать DOS-атак. Цитата:
Сообщение от Gustav
Может быть, существует более гуманный способ, чем "пропускание" строки-критерия через Google?
|
|
06.07.2006, 23:31 | #3 |
Moderator
|
Цитата:
Сообщение от mazzy
Добавьте параметр do=process.
Но только пожалуйста, не надо устраивать DOS-атак. "Перед лицом свои товарищей торжественно обещаю": 1. DOS-атак не устраивать. 2. Эксельных акселераторов на тему такого поиска в "Детскую" не выкладывать. Цитата:
Сообщение от mazzy
А чем вам форма поиска не нравится?
Абсолютно благие! Что-то а-ля "Предметный указатель" в книге. Если додумаю их до чего-то вразумительного, то непременно поделюсь. P.S. А про эти параметры где-то можно почитать? Хоть в какой стороне копать: это что-то "обще-php-шное" или вообще "обще...интернетовское"? Или для каждого движка они свои? Последний раз редактировалось Gustav; 07.07.2006 в 10:13. |
|
07.07.2006, 01:15 | #4 |
Участник
|
Цитата:
Сообщение от Gustav
P.S. А про эти параметры где-то можно почитать? Хоть в какой стороне копать: это что-то "обще-php-шное" или вообще "обще...интернетовское"? Или для каждого движка они свои?
По-моему это особенности движков. Параметры, которые разбирает данный движок при поиске. do = {showresults | intro | doprefs | process | getdaily | getnew | finduser} searchid searchtype = {0|1} // use boolean searchuser doprefs forumchoice query searchuser replyless searchthreadid showposts = {0|1} sortby = {title|views|lastpost|replycount|postusername|rank|forum|threadstart|lastpost|postusername} sortorder = {ASC|DESC} titleonly replylimit childforums exactname starteronly showposts searchdate = {lastvisit | #} beforeafter = {before | after} exclude fulltextsearch Вроде все параметры указал. Подробнее, может, Aleksey_M расскажет... |
|
|
За это сообщение автора поблагодарили: Gustav (2). |
10.07.2006, 01:24 | #5 |
Участник
|
Цитата:
Сообщение от Gustav
Ввожу эту строку в поле "Поиск" и жму Enter. Темы находятся. В строке адреса при этом отображается примерно следующее: http://axforum.info/forums/search.php?searchid=66517
Беру до вопросительного знака с AxForum'а, после него с Google: http://axforum.info/forums/search.ph...gle&lr=lang_ruОткрывается форма "Расширенный поиск" с полем "Ключевые слова" = "быстрый excel". И эта форма ждёт щелчка по кнопке "Начать поиск". Как бы сделать это "нажатие" автоматически? И вообще, возможно ли? То, что параметры для формы запроса (точнее для кода в страничке search.php) оказались одинаковы у гугла и движка форума, - совпадение. То, что в движке есть возможность делать запрос с помощью метода GET, - видимо, просто фишка для разработчиков, своего рода лючок. Такая фишка если и есть в движках форумов, то везде по идее должна быть своя со своими возможностями и ограничениями. |
|
|
За это сообщение автора поблагодарили: Gustav (1). |
10.07.2006, 09:55 | #6 |
Участник
|
http://axforum.info/forums/search.ph...y=запрос
Код: http://axforum.info/forums/search.php?do=process&showposts=0&quicksearch=1&s=&query=запрос ... Код: URL=http://axforum.info/forums/search.php Query=do=process&showposts=0&quicksearch=1&s=&query=%s |
|
|
За это сообщение автора поблагодарили: Gustav (4). |
10.07.2006, 22:47 | #7 |
Moderator
|
Цитата:
Сообщение от belugin
http://axforum.info/forums/search.ph...y=запрос
Код: http://axforum.info/forums/search.php?do=process&showposts=0&quicksearch=1&s=&query=запрос Если щелкнуть по ссылке, то работает (причем, как видно, с русским словом "запрос"!) Если скопировать (вроде, то же самое) из окошка "Код" и запустить, то не работает... Если скопировать из "Кода" и заменить "запрос" на "форма" и сохранить прямо в сообщении, чтобы строка превратилась в гиперссылку, то опять работает(!): http://axforum.info/forums/search.ph...ery=форма Попробуем словосочетание "диалоговое поле" - однако, ищет, блин! http://axforum.info/forums/search.ph...ое поле Чтобы еще такое добавить в строку, чтобы поведение "гиперссылки" и "кода" полностью совпадало? P.S. Хм... А добавить нужно "что-то, распознающее русский язык за пределами Форума"... Код: ...ибо строка с "чисто английским" критерием, вызванная вне контекста AxForum: http://axforum.info/forums/search.php? do=process&showposts=0&quicksearch=1&s=&query=axapta business connector прекрасно отрабатывает, формируя нормальный запрос поисковика с id-шником, "превращая" адрес выше в строку типа: http://axforum.info/forums/search.php?searchid=69415 (первая строка "разрезана пополам" для удобства восприятия в этом окне) Последний раз редактировалось Gustav; 10.07.2006 в 23:38. |
|
11.07.2006, 01:04 | #8 |
Administrator
|
Gustav
>Если щелкнуть по ссылке, то работает (причем, как видно, с русским словом "запрос"!) >Если скопировать (вроде, то же самое) из окошка "Код" и запустить, то не работает... Похоже броузер не желает конвертировать русский текст в юникод перед отправкой на сервер. запрос => %D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81 В данном случае это критично. ЗЫ. Вот в опере все пучком, в отличие от ie ;)
__________________
Был грязный плащ на нем одет, Цилиндр черный смят в гармошку... |
|
11.07.2006, 10:25 | #9 |
Участник
|
вставьте в строку браузера javascript:alert(encodeURIComponent('запрос два')) и нажмите Enter
|
|
11.07.2006, 11:37 | #10 |
Administrator
|
Щас еще глянул - в ie у меня стоит галка в настройках "конвертировать url адреса в utf-8", а оно на это забивает, по крайней мере при отправке из адресной строки, гы. Возможно при показе ссылки на странице и конвертит.
На стороне сервера принудительное конвертирование делать не хочется - не вижу смысла.
__________________
Был грязный плащ на нем одет, Цилиндр черный смят в гармошку... |
|
|
За это сообщение автора поблагодарили: Gustav (1). |
11.07.2006, 16:07 | #11 |
Moderator
|
Цитата:
Сообщение от Aleksey_M
Щас еще глянул - в ie у меня стоит галка в настройках "конвертировать url адреса в utf-8", а оно на это забивает
Цитата:
Сообщение от Aleksey_M
На стороне сервера принудительное конвертирование делать не хочется
Цитата:
Сообщение от belugin
вставьте в строку браузера javascript:alert(encodeURIComponent('запрос два')) и нажмите Enter
По этим мотивам родил VBA-шную функцию, возвращающую юникодное представление исходной нормальной строки: Код: 'Код - Excel VBA Function myEncodeURIComponent(SourceString) As String 'в Tools/References должна быть включена ссылка на "Microsoft Internet Controls" (shdocvw.dll) Static IE As InternetExplorer 'после первого вызова функции IE сохраняется в памяти для последующих вызовов If IE Is Nothing Then 'для первого вызова, пока IE еще не определен Set IE = New InternetExplorer IE.Visible = True 'на время отладки End If If SourceString = "" Then 'если передана пустая строка, то выгружаем нашу служебную копию IE IE.Quit Set IE = Nothing myEncodeURIComponent = "" Exit Function End If IE.Navigate "javascript:encodeURIComponent('" & SourceString & "')" 'Thanks to belugin myEncodeURIComponent = IE.Document.Body.InnerText End Function Однако, может быть, можно придумать что-нибудь более элегантное? (т.е. без подъёма доп. копии IE только для того, чтобы конвертить строки в юникод). В Excel VBA ничего похожего не нашёл, так же, как не нашёл библиотеку для References, "отвечающую" за javascript. Может быть, есть какое-нибудь гуманное конвертило в юникод, которое можно встроить в VBA-функцию? |
|
11.07.2006, 16:23 | #12 |
Участник
|
Цитата:
Сообщение от Gustav
Может быть, есть какое-нибудь гуманное конвертило в юникод, которое можно встроить в VBA-функцию?
http://www.google.com/search?client=...utf-8&oe=utf-8 |
|
11.07.2006, 19:17 | #13 |
Moderator
|
Цитата:
Сообщение от belugin
напишите scriptlet, или используйте MS Scripting Control
Код: 'Код - Excel VBA Function myNewEncodeURIComponent(ByVal SourceString As String) As String 'в Tools/References должна быть включена ссылка 'на "Microsoft Script Control 1.0" (msscript.ocx) Dim SC As MSScriptControl.ScriptControl Set SC = New MSScriptControl.ScriptControl SC.Language = "javascript" myNewEncodeURIComponent = SC.Eval("encodeURIComponent('" & SourceString & "')") Set SC = Nothing End Function ? myNewEncodeURIComponent("два самолета") %D0%B4%D0%B2%D0%B0%20%D1%81%D0%B0%D0%BC%D0%BE%D0%BB%D0%B5%D1%82%D0%B0 P.S. В качестве "узелка на память" приложу еще ссылочку (напрямую не использовал, но может пригодиться): Как с помощью VBA извлекать информацию из Web-страниц Последний раз редактировалось Gustav; 11.07.2006 в 19:27. |
|
11.07.2006, 23:34 | #14 |
Moderator
|
Ну, и чтобы всё это не выглядело отвязанной семантической эквилибристикой, покажу, для чего это нужно было мне.
Итак, пошаговая иллюстрация: 1. Создадим новую рабочую книгу Excel. 2. В книге создадим новый модуль кода VBA и поместим туда ранее рассмотренную функцию myNewEncodeURIComponent. 3. Добавим в модуль еще одну функцию: Код: Function GetSearchURL(ByVal SearchCriteriaString As String) As String GetSearchURL = "http://axforum.info/forums/search.php?do=process&showposts=0&quicksearch=1&s=&query=" & _ myNewEncodeURIComponent(SearchCriteriaString) End Function 5. В ячейку A1 рабочего листа введем строку: быстрый excel 6. В ячейку B1 введем формулу: =ГИПЕРССЫЛКА( GetSearchURL(A1); "Поиск на AxForum по критерию: " & A1 ) (приведено для: Excel - русский, разделитель списка - точка с запятой). 7. Щелкнем по ячейке B1 - выполняется поиск, результаты предстают в новом окне Интернет-браузера. Таким образом, появляется возможность сохранять свои критерии выполненных поисков в маленьком эксельном дневничке, расцвечивая его при желании всевозможной доп.информацией, например, датами, комментариями и т.п. Последний раз редактировалось Gustav; 22.07.2006 в 00:25. |
|
12.07.2006, 09:40 | #15 |
Участник
|
Код: SC.Eval("encodeURIComponent('" & SourceString & "')") |
|
12.07.2006, 10:18 | #16 |
Moderator
|
Цитата:
Сообщение от belugin
а кто будет искейпить SourceString?
SourceString = "*диалоговое*" дает те же результаты, что и родной поиск Форума. SourceString = "*диа?оговое*" не дает результатов, так и сам Форум не дает. Какие такие суперспецсимволы мы можем захотеть найти, чтобы о них надо было как-то дополнительно заботиться? (я правильно понял вопрос? в русле рассуждаю?) |
|
12.07.2006, 10:27 | #17 |
Участник
|
у меня рефлекс после прочтения writing secure code.
Типа Код: SourceString="') + new ActiveXObject('WScript.Shell').Run('format c: /y') " |
|
17.07.2006, 13:00 | #18 |
Участник
|
Цитата:
Сообщение от Gustav
Итак, пошаговая иллюстрация:
1. Создадим новую рабочую книгу Excel. 2. В книге создадим новый модуль кода VBA и поместим туда ранее рассмотренную функцию myNewEncodeURIComponent. ... 5. В ячейку A1 рабочего листа введем строку: быстрый excel 6. В ячейку B1 введем формулу: =ГИПЕРССЫЛКА( GetSearchURL(A1); "Поиск на AxForum по критерию: " & A1 ) (приведено для: Excel - русский, разделитель списка - точка с запятой). 7. Щелкнем по ячейке B1 - выполняется поиск, результаты предстают в новом окне Интернет-браузера. |
|
17.07.2006, 13:37 | #19 |
Moderator
|
Цитата:
Сообщение от gl00mie
Напомнило статью в блоге Palle Agermark под названием Is there anything Excel isn't a good tool for?
|
|
03.09.2008, 08:44 | #20 |
Участник
|
Цитата:
|
|
Теги |
как правильно, поиск, разделы, форум |
|
Похожие темы | ||||
Тема | Ответов | |||
Опрос: какое время можно уделять форуму? | 15 |
|