Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 14, 2012 09:30:30

ingudur
Зарегистрирован: 2012-11-14
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос

Прошу меня сразу извинить за возможно очень глупый вопрос. Я не могу себя назвать даже начинающим программистом Питона, т.к. работаю с такой штукой как 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

Так вот “print text” выдаёт на экран буквенное словосочетание (текст капчи), но добиться чего-либо другого, кроме print, от параметра text (сохранить это буквенное словосочетание в файл, например) не получается. Просто не могу понять в каком он формате.
По логике я думал его переводить из этого неизвестного формата в string: a = str(text), но вместо того самого буквенного словосочетания, которое выводит команда print, мне возвращается вот такая белеберда: <bound method Screen.text of Screen(0) E:Y, T:3,0

Подскажите, пожалуйта, что нужно сделать с параметром text или get_cap_text, чтобы получить из него текст?
Еще раз извиняюсь за глупый вопрос - самому разобраться, к сожалению, не получается.
Заранее благодарю за совет.

Офлайн

#2 Ноя. 14, 2012 09:34:44

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Вопрос

очевидно, что text - это не значение, а функция.
попробуй так
a = text()



Офлайн

#3 Ноя. 14, 2012 09:45:03

ingudur
Зарегистрирован: 2012-11-14
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос

Не помогло
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)

Офлайн

#4 Ноя. 16, 2012 08:15:47

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Вопрос

ingudur
Так вот “print text” выдаёт на экран буквенное словосочетание (текст капчи), но добиться чего-либо другого, кроме print, от параметра text (сохранить это буквенное словосочетание в файл, например) не получается. Просто не могу понять в каком он формате.
если всё прошло успешно, то там просто текст, который сохраняется с помощью print и >>
иначе первый элемент возвращаемого кортежа - строка 'ERROR' (второй элемент - тоже строка)



Отредактировано py.user.next (Ноя. 16, 2012 08:18:18)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version