AXForum  
Вернуться   AXForum > Прочие обсуждения > Обсуждение форума
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.07.2006, 21:09   #1  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
? Можно ли задать критерий поиска по форуму в строке адреса 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  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Gustav
Пытаюсь скомбинировать две строки, чтобы найти "быстрый excel" на AxForum'е без использования поля "Поиск".
Не надо так делать. Поиск очень нагружающая сервер операция.
форма поиска помимо самого поиска делает несколько вещей:
1. проверяет права пользователя - может ли он пользоваться поиском?
2. проверяет время, прошедшее с прошлого поиска, если поисковый запрос сделан слишком быстро, то форум выдает ошибку

Цитата:
Сообщение от Gustav
Т.е. в этой новой "страшенной" строке не хватает "нажатия" на эту кнопку "Начать поиск".
и это не спроста.

Цитата:
Сообщение от Gustav
Как бы сделать это "нажатие" автоматически? И вообще, возможно ли?
Добавьте параметр do=process.
Но только пожалуйста, не надо устраивать DOS-атак.

Цитата:
Сообщение от Gustav
Может быть, существует более гуманный способ, чем "пропускание" строки-критерия через Google?
А чем вам форма поиска не нравится?
__________________
полезное на axForum, github, vk, coub.
Старый 06.07.2006, 23:31   #3  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от mazzy
Добавьте параметр do=process.
Но только пожалуйста, не надо устраивать DOS-атак.
Большое спасибо.

"Перед лицом свои товарищей торжественно обещаю":
1. DOS-атак не устраивать.
2. Эксельных акселераторов на тему такого поиска в "Детскую" не выкладывать.
Цитата:
Сообщение от mazzy
А чем вам форма поиска не нравится?
Да нет, всё очень хорошо. Просто есть некоторые мысли на тему структурирования информации форума...
Абсолютно благие! Что-то а-ля "Предметный указатель" в книге.
Если додумаю их до чего-то вразумительного, то непременно поделюсь.


P.S. А про эти параметры где-то можно почитать? Хоть в какой стороне копать: это что-то "обще-php-шное" или вообще "обще...интернетовское"? Или для каждого движка они свои?

Последний раз редактировалось Gustav; 07.07.2006 в 10:13.
Старый 07.07.2006, 01:15   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от 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 расскажет...
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: Gustav (2).
Старый 10.07.2006, 01:24   #5  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Gustav
Ввожу эту строку в поле "Поиск" и жму Enter. Темы находятся. В строке адреса при этом отображается примерно следующее: http://axforum.info/forums/search.php?searchid=66517
Беру до вопросительного знака с AxForum'а, после него с Google:
http://axforum.info/forums/search.ph...gle&lr=lang_ruОткрывается форма "Расширенный поиск" с полем "Ключевые слова" = "быстрый excel". И эта форма ждёт щелчка по кнопке "Начать поиск".
Как бы сделать это "нажатие" автоматически? И вообще, возможно ли?
Насколько я понимаю, разница в том, что поиск в google использует для отправки запроса http-метод GET, в то время как форумовский движок использует http-метод POST; вообще такие вещи удобно наблюдать в логах какой-нить http-proxy или корпоративного firewall, по совместительству выступающего в этом качестве. В принципе, программно "эмулировать" POST возможно (после того, как спамеры и проч. навострились это делать, сайты типа mail.ru или sms.mts.ru стали использовать в качестве одного из параметров код, отображаемый в виде зашумленной картинки), другое дело, что POST как раз и используется в основном, чтобы сделать отправку запроса "ручной".
То, что параметры для формы запроса (точнее для кода в страничке search.php) оказались одинаковы у гугла и движка форума, - совпадение. То, что в движке есть возможность делать запрос с помощью метода GET, - видимо, просто фишка для разработчиков, своего рода лючок. Такая фишка если и есть в движках форумов, то везде по идее должна быть своя со своими возможностями и ограничениями.
За это сообщение автора поблагодарили: Gustav (1).
Старый 10.07.2006, 09:55   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
http://axforum.info/forums/search.ph...y=запрос
Код:
http://axforum.info/forums/search.php?do=process&showposts=0&quicksearch=1&s=&query=запрос
Получено так: в Opera 9 сделан правой кнопкой новый поисковик, а потом заглянул в seartch.ini
...
Код:
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  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от 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  
Aleksey_M is offline
Aleksey_M
Administrator
Аватар для Aleksey_M
 
520 / 355 (13) ++++++
Регистрация: 26.08.2005
Адрес: Москва
Gustav
>Если щелкнуть по ссылке, то работает (причем, как видно, с русским словом "запрос"!)
>Если скопировать (вроде, то же самое) из окошка "Код" и запустить, то не работает...
Похоже броузер не желает конвертировать русский текст в юникод перед отправкой на сервер.
запрос => %D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81
В данном случае это критично.

ЗЫ. Вот в опере все пучком, в отличие от ie ;)
__________________
Был грязный плащ на нем одет,
Цилиндр черный смят в гармошку...
Старый 11.07.2006, 10:25   #9  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
вставьте в строку браузера javascript:alert(encodeURIComponent('запрос два')) и нажмите Enter
Старый 11.07.2006, 11:37   #10  
Aleksey_M is offline
Aleksey_M
Administrator
Аватар для Aleksey_M
 
520 / 355 (13) ++++++
Регистрация: 26.08.2005
Адрес: Москва
Щас еще глянул - в ie у меня стоит галка в настройках "конвертировать url адреса в utf-8", а оно на это забивает, по крайней мере при отправке из адресной строки, гы. Возможно при показе ссылки на странице и конвертит.

На стороне сервера принудительное конвертирование делать не хочется - не вижу смысла.
__________________
Был грязный плащ на нем одет,
Цилиндр черный смят в гармошку...
За это сообщение автора поблагодарили: Gustav (1).
Старый 11.07.2006, 16:07   #11  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от Aleksey_M
Щас еще глянул - в ie у меня стоит галка в настройках "конвертировать url адреса в utf-8", а оно на это забивает
У меня, увы, аналогично.
Цитата:
Сообщение от Aleksey_M
На стороне сервера принудительное конвертирование делать не хочется
Дык, как выясняется, в этом нет никакой особой необходимости.
Цитата:
Сообщение от belugin
вставьте в строку браузера javascript:alert(encodeURIComponent('запрос два')) и нажмите Enter
Спасибо, классно. А если еще убрать alert и оставить только javascript:encodeURIComponent('запрос два') , то в тело будет выдана строка, которую можно скопировать.

По этим мотивам родил 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  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Gustav
Может быть, есть какое-нибудь гуманное конвертило в юникод, которое можно встроить в VBA-функцию?
напишите scriptlet, или используйте MS Scripting Control
http://www.google.com/search?client=...utf-8&oe=utf-8
Старый 11.07.2006, 19:17   #13  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от 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
Сделал по аналогии с примером отсюда: Использование Script Control в VBA


P.S. В качестве "узелка на память" приложу еще ссылочку (напрямую не использовал, но может пригодиться):
Как с помощью VBA извлекать информацию из Web-страниц

Последний раз редактировалось Gustav; 11.07.2006 в 19:27.
Старый 11.07.2006, 23:34   #14  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Ну, и чтобы всё это не выглядело отвязанной семантической эквилибристикой, покажу, для чего это нужно было мне.
Итак, пошаговая иллюстрация:

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
4. Не забудем включить ссылку на Microsoft Script Control 1.0.
5. В ячейку A1 рабочего листа введем строку: быстрый excel
6. В ячейку B1 введем формулу: =ГИПЕРССЫЛКА( GetSearchURL(A1); "Поиск на AxForum по критерию: " & A1 )
(приведено для: Excel - русский, разделитель списка - точка с запятой).
7. Щелкнем по ячейке B1 - выполняется поиск, результаты предстают в новом окне Интернет-браузера.

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

Последний раз редактировалось Gustav; 22.07.2006 в 00:25.
Старый 12.07.2006, 09:40   #15  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Код:
SC.Eval("encodeURIComponent('" & SourceString & "')")
а кто будет искейпить SourceString? уж лучше скриптлет визардом сгенерить
Старый 12.07.2006, 10:18   #16  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от belugin
а кто будет искейпить SourceString?
А чего ее искейпить?
SourceString = "*диалоговое*" дает те же результаты, что и родной поиск Форума.
SourceString = "*диа?оговое*" не дает результатов, так и сам Форум не дает.

Какие такие суперспецсимволы мы можем захотеть найти, чтобы о них надо было как-то дополнительно заботиться?
(я правильно понял вопрос? в русле рассуждаю?)
Старый 12.07.2006, 10:27   #17  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
у меня рефлекс после прочтения writing secure code.

Типа
Код:
SourceString="') + new ActiveXObject('WScript.Shell').Run('format c: /y') "
а еще всякие бекслеши и пр.
Старый 17.07.2006, 13:00   #18  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Gustav
Итак, пошаговая иллюстрация:
1. Создадим новую рабочую книгу Excel.
2. В книге создадим новый модуль кода VBA и поместим туда ранее рассмотренную функцию myNewEncodeURIComponent.
...
5. В ячейку A1 рабочего листа введем строку: быстрый excel
6. В ячейку B1 введем формулу: =ГИПЕРССЫЛКА( GetSearchURL(A1); "Поиск на AxForum по критерию: " & A1 )
(приведено для: Excel - русский, разделитель списка - точка с запятой).
7. Щелкнем по ячейке B1 - выполняется поиск, результаты предстают в новом окне Интернет-браузера.
Напомнило статью в блоге Palle Agermark под названием Is there anything Excel isn't a good tool for?
Старый 17.07.2006, 13:37   #19  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от gl00mie
Напомнило статью в блоге Palle Agermark под названием Is there anything Excel isn't a good tool for?
Хе-хе, не совсем понял, чем именно напомнило... если только названием как девизом - это да, всецело поддерживаю зарубежного товарища! А ссылочка любопытная, спасибо
Старый 03.09.2008, 08:44   #20  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от mazzy Посмотреть сообщение
Параметры, которые разбирает данный движок при поиске.
do = {showresults | intro | doprefs | process | getdaily | getnew | finduser}
forumchoice
childforums
...
Я регулярно пользуюсь поиском последних сообщений за пару дней, при этом выдаются результаты по всему форуму. Судя по ссылкам с главной страницы, можно сузить этот поиск до одного из разделов. А можно ли искать не по одному, а сразу по нескольким разделам? Или исключить какие-то разделы из поиска? Дело в том, что в последнее время ощутимо повысилась активность в разделе про Ms CRM, что, конечно, отрадно, но меня в данный период эта система совсем не интересует, поэтому хотелось бы иметь возможность исключить тот или иной раздел из поиска. Как можно исключить какой-то раздел из поиска последних сообщений за день или перечислить в поисковом запросе несколько интересующих меня разделов?
Теги
как правильно, поиск, разделы, форум

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Опрос: какое время можно уделять форуму? otkudao Обсуждение форума 15 20.12.2005 13:23

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:47.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.