Форум сайта python.su
В общем, идея тут у меня промелькнула.
Если удастся всё-таки реализовать эту байду через ие, просто залогиниваться, то можно, для некоторого ускорения процесса, просто напросто читать куку, будучи уже авторизованным и находищимся на нужной страничке сервиса яши, и с этой кукой рулить уже!!
Плииз, topazz, помоги мне!!
Офлайн
Ие - это костыли.
Хотя я сделал регер для народа, но он собака не работает в треде(только в мейн треде) и не работает с проксями.
Относительно AttributeError: <unknown>.bigForm.. получи перед doc.bigForm.iname.value = “Степа” хтмл страници и глянь есть ли там форма вообще.
text = ie.Document.body.innerHTML
text = unicode(text)
text = text.encode('ascii','ignore')
Отредактировано (Авг. 19, 2009 11:12:08)
Офлайн
Я ставил задержку в 15 секунд. Как раз, успевает загрузиться страничка. Форма есть - поиск. Сегодня еще подолбаю.. Ссылки - это про методы? А то, я же говорю, у doc не вижу методов никаких. А откуда ты их берешь..?
upd:
Может, по асе свяжемся?
upd:
Всё равно, фигня получается
Точнее, не получается. Та же ошибка. Я даже в интерактивном режиме делаю, построчно выполняю код - не получается.
Ты вообще проверял? Работает ли это всё?
Хоть убей - не получается!
Полез читать про этот DOM или типа того..
upd:
такк.. с горем пополам понял, что методы документа - это его управляющие элементы )
теперь буду думать, как выбирать форму, у которой нету name=“бла”
upd:
не совсем понял, зачем ты показал ‘text’, но зато, на это мпримере, я понял, как парсить док. Спасибо! ;)
Кажется, справлюсь теперь! ;)
Отредактировано (Авг. 19, 2009 18:49:40)
Офлайн
Итак, кому интересно, вот рабочий код, который открывает ya.ru, выбирает там безымянную форму, заполняет в ней текстовое поле и сабмитит:
# -*- coding: cp1251 -*-
from win32com.client import Dispatch # импортим из COM-клиента Диспатчер (хз, что это..)
import time # импортим либу time
ie = Dispatch("InternetExplorer.Application") # инициализируем осла
ie.Visible = 1 # делаем его видимым, если надо
ie.Navigate("http://ya.ru") # открываем ya.ru
# --> пока браузер не готов, выполняем задержки по одной секунде
while ie.Busy != False:
time.sleep(1)
# <-- браузер готов, погнали дальше
doc = ie.Document # определяем объект открытого документа
# походу, это аналогично предыдущей
# проверке загрузки странички, но у меня никогда не срабатывает )
while doc.readyState != "complete":
time.sleep(1)
# <--
""" # ТУТ ПАРСИЛКА
text = ie.Document.body.innerHTML
text = unicode(text)
text = text.encode('ascii','ignore')
""" # конец парсилке
fr = doc.forms[0] # выбираем первую же форму
fr.text.value = '"Jezuz_Chrizt"' # вводим в текстовое поле объект тщеславия )
fr.submit() # сабмитим форму
Отредактировано (Авг. 19, 2009 19:46:11)
Офлайн
Заглянул в топик, появилась идея сделать себе автоматическую пополнялку денег на телефон из яндекс денег, при балансе менее 50 руб :)
Chrizt, у тебя “ручками” через urliib2 получилось войти? Что и куда post'ом отправлять? Через ie у меня не прокатит, так как скрипт на linux сервере будет лежать, и по cron'у работать…
Офлайн
Через urllib2 и даже через механайз получилось войти на яндекс, но по его сервисам не получилось авторизованным бродитб. В других системах проще, реально.
Напиши ТЗ, подробнее.
Офлайн
ChriztВообщем то хочу для начала авторизоваться.
Напиши ТЗ, подробнее.
d={}
d['login']=LOGIN
d['passwd']=PASSW
d['twoweeks']='yes'
d['retpath']='https%253A%252F%252Fmoney.yandex.ru%252F%253Fncrnd%253D7031'
d['timestamp']='1250767752075'
data = urllib.urlencode(d)
req = urllib2.Request('https://passport.yandex.ru/passport?mode=auth', data)
Офлайн
О, не, не получится у тебя ничего. все сервисы яши тебе будут недоступны.
Советую изучить этот DOM, потому что, вроде как и без IE можно рулить браузером. Я могу ошибаться, но есть вроде как WebBrowser, так же, есть к питону ещё различные версии эмуляторов браузера. Не помню названий, но я почти уверен, что ты сможешь найти выход. А урллибом даже если ты авторизуешься - ты за пределы Яндекс.Паспорта не уйдёшь.
Офлайн
Технически, если посылать нужные хедеры, то яндексу пофиг, урллиб это, или браузер.
Попробую я скормить скрипту существующие куки из браузера, должно получиться.
Офлайн
Чувак, я уже брал куки с авторизации, но с ними дальше wow.ya.ru не уходил.
советую тебе включить сниффер и посмотреть, сколько там порождается редиректов.
конечно, если этим редиректам всем следовать правильно - может, у тебя что-то и получится.
там вроде как есть FancyURLOpener - попробуй его.
Офлайн