Дмитрий Падучих wrote:

Действительно просто, спасибо, вот и до работы с дебагером добрался ).

наделал  примеров простых запросов:

        ;; ...остальные правила
        

("wikipedia-ru" 
"http://ru.wikipedia.org/w/index.php?title=Служебная:Search&search=%s&go=Перейти";
 utf-8)
("debian-packages" 
"http://packages.debian.org/search?keywords=%s&searchon=names&suite=all&section=all";
 koi8-r)
("blinux-rus" 
"http://www.mail-archive.com/search?q=%s&l=blinux-rus%%40lists.a11ywiki.org"; 
koi8-r)
("forum.ubuntu.ru" 
"http://www.google.ru/search?q=%s&submit=%%d0%%9f%%d0%%be%%d0%%b8%%d1%%81%%d0%%ba&sitesearch=ubuntu.ru&hl=ru";
 utf8)
("linuxforum" 
"http://www.google.ru/search?q=%s&submit=%%d0%%9f%%d0%%be%%d0%%b8%%d1%%81%%d0%%ba&sitesearch=linuxforum.ru/lofiversion/index.php/f13&hl=ru";
 koi8-r)
("lor" 
"http://www.linux.org.ru/search.jsp?q=%s&include=all&date=year&section=0&username=&sort=1";
 koi8-r)
("lor-google" 
"http://www.google.ru/custom?domains=www.linux.org.ru&q=%s&sa=%%d0%%9f%%d0%%be%%d0%%b8%%d1%%81%%d0%%ba&sitesearch=www.linux.org.ru&client=pub-6069094673001350&forid=1&ie=UTF-8&oe=UTF-8&flav=0000&sig=VNPb2D8JZrqtw9dZ&cof=GALT:%%233399FF%%3bGL:1%%3bDIV:%%23666666%%3bVLC:FFFFFF%%3bAH:center%%3bBGC:000000%%3bLBGC:FFFF00%%3bALC:FFFFFF%%3bLC:FFFFFF%%3bT:CCCCCC%%3bGFNT:FFFFFF%%3bGIMP:FFFFFF%%3bLH:65%%3bLW:30%%3bL:http://www.linux.org.ru/black/img/angry-logo.gif%%3bS:http://%%3bLP:1%%3bFORID:1&hl=ru";
 koi8-r)
))
правила работают, но для запросов  на латинице.
русские символы рисует  кракозябрами , либо вопросиками .
В случае с wiki blinux-rus
Location: 
http://www.mail-archive.com/search?q=%c1%d5%c4%c9%cf&l=blinux-rus%40lists.a11ywiki.org
MOD_PYTHON ERROR

ProcessId:      7042
Interpreter:    'www.mail-archive.com'

ServerName:     'www.mail-archive.com'
DocumentRoot:   '/home/archive/archive'

URI:            '/py/search/lucene_search.py'
Location:       None
Directory:      '/var/www/python/search/'
Filename:       '/var/www/python/search/lucene_search.py'
PathInfo:       ''

Phase:          'PythonHandler'
Handler:        'lucene_search'

Traceback (most recent call last):

  File "/usr/lib/python2.5/site-packages/mod_python/importer.py", line 1537, in 
HandlerDispatch
    default=default_handler, arg=req, silent=hlist.silent)

  File "/usr/lib/python2.5/site-packages/mod_python/importer.py", line 1229, in 
_process_target
    result = _execute_target(config, req, object, arg)

  File "/usr/lib/python2.5/site-packages/mod_python/importer.py", line 1128, in 
_execute_target
    result = object(arg)

  File "/var/www/python/search/lucene_search.py", line 170, in handler
    query_input = cgi.escape(form['q'].decode('utf-8'), False)

  File "/usr/lib/python2.5/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)

UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-1: invalid 
data

MODULE CACHE DETAILS

Accessed:       Sun Jan 31 21:59:42 2010
Generation:     0

_mp_18b66d1f7a368d81b82e590c38682094 {
  FileName:     '/var/www/python/search/lucene_search.py'
  Instance:     1 [IMPORT]
  Generation:   1
  Modified:     Tue Jan 12 19:17:44 2010
  Imported:     Sun Jan 31 21:59:42 2010
}


указывал в правилах и utf8, получаю ошибки типа 
w3m-url-encode-string: Invalid coding system: utf8 

Что делаю не так?


И еще не понятно что значит %s и %%.
> tolyangin:
>
> To> Вчитываясь в исходный код страницы и ваши примеры правил, озарение
> To> как составить запрос не приходит.
>
> To> научите как составлять правила для сабжа. Желательно с
> To> комментариями используемых символов.
>
> Я делал так. Вычислил форму:
>
> (defadvice w3m-goto-url (before test act) (debug))
>
> После этого Emacs перед выполнением функции w3m-goto-url будет
> открывать буфер дебагера. Из него можно взять первый аргумент функции
> w3m-goto-url - это и будет адрес запроса, если Вы посылали запрос. В
> этом буфере можно прервать выполнение, нажав q, или продолжить, нажав
> c. defadvice можно включать и выключать при помощи, соответственно:
>
> M-x ad-activate RET w3m-goto-url RET
> M-x ad-deactivate RET w3m-goto-url RET  
>
> На странице с формой введите строку запроса и нажмите нужную
> кнопку. Так как русские символы кодируются, а Вам надо будет найти эту
> строку в полученном адресе, то лучше вводить строку латиницей и
> использовать что-нибудь уникальное, например, tolyangin. Появится
> буфер дебагера, из которого можно взять адрес. В адресе замените все
> знаки % на %%. После этого замените строку запроса (например,
> tolyangin) на %s.
>
> В правиле для русской википедии я декодировал все русские символы, но
> лучше этого не делать, а вместо этого заменить % на %%.
>
> Чтобы совсем убрать defadvice для функции, выполните
>
> M-x ad-unadvise RET w3m-goto-url RET
-- 
Blinux-rus mailing list
[email protected]
http://www.a11ywiki.org/cgi-bin/mailman/listinfo/blinux-rus

Ответить