Форум сайта python.su
0
Прошу меня сразу извинить за возможно очень глупый вопрос. Я не могу себя назвать даже начинающим программистом Питона, т.к. работаю с такой штукой как Sikuli, пишу в ней простенькие скрипты-программки, используя в основном базовый, самый поверхностный синтаксис Питона.
Но сегодня понадобилось мне прикрутить один небольшой питоновский код для работы с капчами. Код сам по себе отдельно отлично работает, и мне нужно его результат получить в string. Но вот здесь возник затык, который самому разрулить ну никак не получается.
Итак, есть функция, get_cap_text (даю кусок кода, связанного с этой функцией):
def get_cap_text(key, cap_id): ''' Waiting and getting captcha text ''' logging.info('--- Get captcha text') time.sleep(5) res_url= 'http://antigate.com/res.php' res_url+= "?" + urllib.urlencode({'key': key, 'action': 'get', 'id': cap_id}) while 1: res= urllib.urlopen(res_url).read() if res == 'CAPCHA_NOT_READY': time.sleep(1) continue break res= res.split('|') if len(res) == 2: return tuple(res) else: return ('ERROR', res[0])
# getting result
status, text = get_cap_text(key, cap_id)
print text
Офлайн
568
очевидно, что text - это не значение, а функция.
попробуй так
a = text()
Офлайн
0
Не помогло a = text() print a - вместо того одного текстового слова выдает очень много всего: L15;] 0m_anti_czp.py -C\0m_anti_?2 p.py Fle Edt Format Rm Options Whdows Heb ;| def send cap (key, fn) : " ' sending captcha IN: account key key fn file name OUT : captcha id False in case of success in case of failure logging.info Send captcha' read() ' rb data = open(fn, # data boundary boundar y= OmNaOmNaOmNamo ' # building POST request body %s form-data: name=?method Content-Disposition: DOSE %s form-data; name="key Content-Disposition: %s %s form-data: name=?file" filename="image .jpg Content-Disposition: Content-Type: image/pjpeq %s %s % (boundary boundary k?Y boundary, data, boundary) ' mu ltipart/form-data; boundary=%s' ' Content-type headers = # connecting % boundary} http1ib . HTTPConnection('antigace.com' # sending request h.request # receiving answer and analyzing it {ESD data = resp .read() h.close () i f resp .status body, headers) POST", ?'/irhphp h.getresponse () == 200 : = int (data. split cap id return cap id ) [1]) else: % (resp .status, resp . reason)) 10qqi?q.err0r ('Captcha not send: %s %s' return False if -= ? main ?: HEHE main() C :/images/captcha.txt ', 'w' ODEH >>f, text DI'11'\E Y .n: 69 ~CoI:0 9:37 az g|gl_l~;I;l@IQI@HgIlT 3| ? II_ VI'} rf llycx I3 KI EN S 7 14.11.2012
Отредактировано FishHook (Ноя. 14, 2012 09:46:03)
Офлайн
857
ingudurесли всё прошло успешно, то там просто текст, который сохраняется с помощью print и >>
Так вот “print text” выдаёт на экран буквенное словосочетание (текст капчи), но добиться чего-либо другого, кроме print, от параметра text (сохранить это буквенное словосочетание в файл, например) не получается. Просто не могу понять в каком он формате.
Отредактировано py.user.next (Ноя. 16, 2012 08:18:18)
Офлайн